]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/walk/select.go
cmd/compile/internal/walk: reuse runtime.scase
[gostls13.git] / src / cmd / compile / internal / walk / select.go
index 9ca132af7ad5a5ff3ce1ca051b6f75cce2242503..009753c8ad4e89658cc8a23c51511ea19312e197 100644 (file)
@@ -9,6 +9,7 @@ import (
        "cmd/compile/internal/ir"
        "cmd/compile/internal/typecheck"
        "cmd/compile/internal/types"
+       "cmd/internal/src"
 )
 
 func walkSelect(sel *ir.SelectStmt) {
@@ -287,11 +288,15 @@ var scase *types.Type
 // Keep in sync with src/runtime/select.go.
 func scasetype() *types.Type {
        if scase == nil {
-               scase = types.NewStruct([]*types.Field{
+               n := ir.NewDeclNameAt(src.NoXPos, ir.OTYPE, ir.Pkgs.Runtime.Lookup("scase"))
+               scase = types.NewNamed(n)
+               n.SetType(scase)
+               n.SetTypecheck(1)
+
+               scase.SetUnderlying(types.NewStruct([]*types.Field{
                        types.NewField(base.Pos, typecheck.Lookup("c"), types.Types[types.TUNSAFEPTR]),
                        types.NewField(base.Pos, typecheck.Lookup("elem"), types.Types[types.TUNSAFEPTR]),
-               })
-               scase.SetNoalg(true)
+               }))
        }
        return scase
 }