]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile/internal/types2: type alias decl requires go1.9
authorRobert Griesemer <gri@golang.org>
Thu, 4 Feb 2021 06:34:34 +0000 (22:34 -0800)
committerRobert Griesemer <gri@golang.org>
Thu, 4 Feb 2021 22:22:03 +0000 (22:22 +0000)
Add respective check to type checker.
Remove respective check from the compiler's new type2-based noder.

Updates #31793.

Change-Id: I907e3acab4c136027a8c3db1e9bac301d209c2e1
Reviewed-on: https://go-review.googlesource.com/c/go/+/289570
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/noder/decl.go
src/cmd/compile/internal/types2/decl.go
src/cmd/compile/internal/types2/testdata/go1_8.src [new file with mode: 0644]

index 9862f452fdcfe7e3ae465842f5f4a7ea86fe1aa5..a1596be4a424ab70b2cd1f91a5f84abfb88f014b 100644 (file)
@@ -102,10 +102,6 @@ func (g *irgen) funcDecl(out *ir.Nodes, decl *syntax.FuncDecl) {
 
 func (g *irgen) typeDecl(out *ir.Nodes, decl *syntax.TypeDecl) {
        if decl.Alias {
-               if !types.AllowsGoVersion(types.LocalPkg, 1, 9) {
-                       base.ErrorfAt(g.pos(decl), "type aliases only supported as of -lang=go1.9")
-               }
-
                name, _ := g.def(decl.Name)
                g.pragmaFlags(decl.Pragma, 0)
 
index 0b7956f28783cb6cccf5a3acee7f5355e0207d85..59d0a112b1264b64f0cb4cc1730306759fdb0b8e 100644 (file)
@@ -629,6 +629,9 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *Named
 
        if alias {
                // type alias declaration
+               if !check.allowVersion(obj.pkg, 1, 9) {
+                       check.errorf(tdecl, "type aliases requires go1.9 or later")
+               }
 
                obj.typ = Typ[Invalid]
                obj.typ = check.anyType(tdecl.Type)
diff --git a/src/cmd/compile/internal/types2/testdata/go1_8.src b/src/cmd/compile/internal/types2/testdata/go1_8.src
new file mode 100644 (file)
index 0000000..0f3ba94
--- /dev/null
@@ -0,0 +1,10 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check Go language version-specific errors.
+
+package go1_8 // go1.8
+
+// type alias declarations
+type any /* ERROR type aliases requires go1.9 or later */ = interface{}