- 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 |
||
---|---|---|
.. | ||
boundmeth.go | ||
coverage.go | ||
fieldprom.go | ||
ifaceconv.go | ||
ifaceprom.go | ||
initorder.go | ||
methprom.go | ||
mrvchain.go |