| 1230 | } |
| 1231 | |
| 1232 | func (t *translator) arrayElems(elems []ast.ArrayElem, inType super.Type) ([]sem.ArrayElem, super.Type) { |
| 1233 | var out []sem.ArrayElem |
| 1234 | var types []super.Type |
| 1235 | for _, elem := range elems { |
| 1236 | switch elem := elem.(type) { |
| 1237 | case *ast.SpreadElem: |
| 1238 | elemExpr, elemType := t.expr(elem.Expr, inType) |
| 1239 | out = append(out, &sem.SpreadElem{Node: elem, Expr: elemExpr}) |
| 1240 | types = append(types, elemType) |
| 1241 | case *ast.ExprElem: |
| 1242 | elemExpr, elemType := t.expr(elem.Expr, inType) |
| 1243 | out = append(out, &sem.ExprElem{Node: elem, Expr: elemExpr}) |
| 1244 | types = append(types, elemType) |
| 1245 | default: |
| 1246 | panic(elem) |
| 1247 | } |
| 1248 | } |
| 1249 | return out, t.checker.fuse(types) |
| 1250 | } |
| 1251 | |
| 1252 | func (t *translator) fstringExpr(f *ast.FStringExpr, inType super.Type) (sem.Expr, super.Type) { |
| 1253 | if len(f.Elems) == 0 { |