}
switch t.Elem().Etype {
- case TINTER:
- // Do two loops. First, check that all the types match (cheap).
- // Second, check that all the data match (expensive).
- // TODO: when the array size is small, unroll the tab match checks.
- checkAll(3, func(pi, qi *Node) *Node {
- // Compare types.
- pi = typecheck(pi, ctxExpr)
- qi = typecheck(qi, ctxExpr)
- eqtab, _ := eqinterface(pi, qi)
- return eqtab
- })
- checkAll(1, func(pi, qi *Node) *Node {
- // Compare data.
- pi = typecheck(pi, ctxExpr)
- qi = typecheck(qi, ctxExpr)
- _, eqdata := eqinterface(pi, qi)
- return eqdata
- })
case TSTRING:
// Do two loops. First, check that all the lengths match (cheap).
// Second, check that all the contents match (expensive).