- This change implements the correct type-based equivalence relation for aggregate types. e.g. comparison of struct types no longer compares the anonymous fields. We do analogous things for hash(). - equals() and eqnil() have been separated: the former panics for uncomparable types, the latter permits comparisons of slice/map/func types against a literal nil and is intended for use only by "static" ssa.BinOp(EQL), not "dynamic" slice comparisons encountered during (e.g.) interface comparisons, which should panic regardless of operand nilness. - we use a (global) typemap.Hasher to compute type hashes; hashing the Type.String() value was not sound. + tests. NB, this change unearthed a bug in defer/recover within init(); it will be fixed in a followup change. R=gri, crawshaw CC=golang-dev https://golang.org/cl/13719043 |
||
|---|---|---|
| cmd | ||
| dashboard | ||
| go | ||
| godoc | ||
| gotype | ||
| importer | ||
| oracle | ||
| pointer | ||
| ssa | ||
| .hgignore | ||
| AUTHORS | ||
| CONTRIBUTORS | ||
| LICENSE | ||
| PATENTS | ||
| README | ||
| codereview.cfg | ||
README
This subrepository holds the source for various packages and tools that support the Go programming language. Although at least some of the tools themselves will be included in binary Go distributions, the packages from which they are built are of little interest to most Go programmers. To submit changes to this repository, see http://golang.org/doc/contribute.html.