aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/noder/irgen.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/compile/internal/noder/irgen.go')
-rw-r--r--src/cmd/compile/internal/noder/irgen.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/noder/irgen.go b/src/cmd/compile/internal/noder/irgen.go
index 1cef98742d..28536cc1f7 100644
--- a/src/cmd/compile/internal/noder/irgen.go
+++ b/src/cmd/compile/internal/noder/irgen.go
@@ -35,6 +35,7 @@ func check2(noders []*noder) {
// typechecking
conf := types2.Config{
+ GoVersion: base.Flag.Lang,
InferFromConstraints: true,
IgnoreLabels: true, // parser already checked via syntax.CheckBranches mode
CompilerErrorMessages: true, // use error strings matching existing compiler errors
@@ -185,6 +186,21 @@ Outer:
return false
})
}
+
+ // Create any needed stencils of generic functions
+ g.stencil()
+
+ // For now, remove all generic functions from g.target.Decl, since they
+ // have been used for stenciling, but don't compile. TODO: We will
+ // eventually export any exportable generic functions.
+ j := 0
+ for i, decl := range g.target.Decls {
+ if decl.Op() != ir.ODCLFUNC || !decl.Type().HasTParam() {
+ g.target.Decls[j] = g.target.Decls[i]
+ j++
+ }
+ }
+ g.target.Decls = g.target.Decls[:j]
}
func (g *irgen) unhandled(what string, p poser) {