mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.typeparams] cmd/compile/internal/types2: type alias decl requires go1.9
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>
This commit is contained in:
parent
721488498a
commit
f37b0c6c12
3 changed files with 13 additions and 4 deletions
|
|
@ -102,10 +102,6 @@ func (g *irgen) funcDecl(out *ir.Nodes, decl *syntax.FuncDecl) {
|
||||||
|
|
||||||
func (g *irgen) typeDecl(out *ir.Nodes, decl *syntax.TypeDecl) {
|
func (g *irgen) typeDecl(out *ir.Nodes, decl *syntax.TypeDecl) {
|
||||||
if decl.Alias {
|
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)
|
name, _ := g.def(decl.Name)
|
||||||
g.pragmaFlags(decl.Pragma, 0)
|
g.pragmaFlags(decl.Pragma, 0)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -629,6 +629,9 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *Named
|
||||||
|
|
||||||
if alias {
|
if alias {
|
||||||
// type alias declaration
|
// 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 = Typ[Invalid]
|
||||||
obj.typ = check.anyType(tdecl.Type)
|
obj.typ = check.anyType(tdecl.Type)
|
||||||
|
|
|
||||||
10
src/cmd/compile/internal/types2/testdata/go1_8.src
vendored
Normal file
10
src/cmd/compile/internal/types2/testdata/go1_8.src
vendored
Normal file
|
|
@ -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{}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue