]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/noder/reader.go
cmd/compile: implement range over func
[gostls13.git] / src / cmd / compile / internal / noder / reader.go
index 40efce139aef09da29689937f5c5a98b1e80fa09..f25c4afb2d8dc20b9c15bc6a3e1be7dc18e5ed3d 100644 (file)
@@ -677,6 +677,9 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index, implicits, explicits []*types.Typ
                if pri, ok := objReader[sym]; ok {
                        return pri.pr.objIdx(pri.idx, nil, explicits, shaped)
                }
+               if sym.Pkg.Path == "runtime" {
+                       return typecheck.LookupRuntime(sym.Name)
+               }
                base.Fatalf("unresolved stub: %v", sym)
        }
 
@@ -1646,7 +1649,14 @@ func (r *reader) stmt1(tag codeStmt, out *ir.Nodes) ir.Node {
                pos := r.pos()
                op := r.op()
                call := r.expr()
-               return ir.NewGoDeferStmt(pos, op, call)
+               stmt := ir.NewGoDeferStmt(pos, op, call)
+               if op == ir.ODEFER {
+                       x := r.optExpr()
+                       if x != nil {
+                               stmt.DeferAt = x.(ir.Expr)
+                       }
+               }
+               return stmt
 
        case stmtExpr:
                return r.expr()