Skip to content

Commit 6a4a407

Browse files
griesemerjproberts
authored andcommitted
go/types, types2: validType argument must be *Named type
Now that we have a separate top-level entry point for validType we can use the more narrow type *Named (instead of Type) for its argument. Preparation for fixing issue golang#48962. Change-Id: I93aee4abc87036c6a68323dc970efe8e617a9103 Reviewed-on: https://go-review.googlesource.com/c/go/+/379434 Trust: Robert Griesemer <[email protected]> Run-TryBot: Robert Griesemer <[email protected]> Reviewed-by: Robert Findley <[email protected]> TryBot-Result: Gopher Robot <[email protected]>
1 parent 8257ad0 commit 6a4a407

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

src/cmd/compile/internal/types2/decl.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,9 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *syntax.TypeDecl, def *Named
477477

478478
var rhs Type
479479
check.later(func() {
480-
check.validType(obj.typ)
480+
if t, _ := obj.typ.(*Named); t != nil { // type may be invalid
481+
check.validType(t)
482+
}
481483
// If typ is local, an error was already reported where typ is specified/defined.
482484
if check.isImportedConstraint(rhs) && !check.allowVersion(check.pkg, 1, 18) {
483485
check.versionErrorf(tdecl.Type, "go1.18", "using type constraint %s", rhs)

src/cmd/compile/internal/types2/validtype.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package types2
99
// defined types.
1010
// (Cycles involving alias types, as in "type A = [10]A" are detected
1111
// earlier, via the objDecl cycle detection mechanism.)
12-
func (check *Checker) validType(typ Type) {
12+
func (check *Checker) validType(typ *Named) {
1313
check.validType0(typ, nil)
1414
}
1515

src/go/types/decl.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,9 @@ func (check *Checker) typeDecl(obj *TypeName, tdecl *ast.TypeSpec, def *Named) {
530530

531531
var rhs Type
532532
check.later(func() {
533-
check.validType(obj.typ)
533+
if t, _ := obj.typ.(*Named); t != nil { // type may be invalid
534+
check.validType(t)
535+
}
534536
// If typ is local, an error was already reported where typ is specified/defined.
535537
if check.isImportedConstraint(rhs) && !check.allowVersion(check.pkg, 1, 18) {
536538
check.errorf(tdecl.Type, _UnsupportedFeature, "using type constraint %s requires go1.18 or later", rhs)

src/go/types/validtype.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package types
99
// defined types.
1010
// (Cycles involving alias types, as in "type A = [10]A" are detected
1111
// earlier, via the objDecl cycle detection mechanism.)
12-
func (check *Checker) validType(typ Type) {
12+
func (check *Checker) validType(typ *Named) {
1313
check.validType0(typ, nil)
1414
}
1515

0 commit comments

Comments
 (0)