]> Cypherpunks repositories - gostls13.git/commitdiff
go/types,types2: add a test for const initializer panic
authorRob Findley <rfindley@google.com>
Thu, 13 Apr 2023 14:22:46 +0000 (10:22 -0400)
committerRobert Findley <rfindley@google.com>
Thu, 13 Apr 2023 15:59:36 +0000 (15:59 +0000)
Updates #59603

Change-Id: Iff99f45a72a259b57b2ebbc6c0f9ed710add3ae3
Reviewed-on: https://go-review.googlesource.com/c/go/+/484376
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
src/cmd/compile/internal/types2/api_test.go
src/go/types/api_test.go

index 41ee641f591f29b9e67b1131276b1d320c89523a..e824f56fae76dc53d770cdd9fb36042f00e53beb 100644 (file)
@@ -1564,6 +1564,33 @@ var _ = a.C2
        makePkg("main", mainSrc) // don't crash when type-checking this package
 }
 
+func TestIssue59603(t *testing.T) {
+       imports := make(testImporter)
+       conf := Config{
+               Error:    func(err error) { t.Log(err) }, // don't exit after first error
+               Importer: imports,
+       }
+       makePkg := func(path, src string) {
+               f := mustParse(path, src)
+               pkg, _ := conf.Check(path, []*syntax.File{f}, nil) // errors logged via conf.Error
+               imports[path] = pkg
+       }
+
+       const libSrc = `
+package a
+const C = foo
+`
+
+       const mainSrc = `
+package main
+import "a"
+const _ = a.C
+`
+
+       makePkg("a", libSrc)
+       makePkg("main", mainSrc) // don't crash when type-checking this package
+}
+
 func TestLookupFieldOrMethodOnNil(t *testing.T) {
        // LookupFieldOrMethod on a nil type is expected to produce a run-time panic.
        defer func() {
index 7cfad422e9b196f51477261de545b8bcce810eb0..7a8c63a43b8b5be6b1e665bf3c84bb298117ae25 100644 (file)
@@ -1562,6 +1562,34 @@ var _ = a.C2
        makePkg("main", mainSrc) // don't crash when type-checking this package
 }
 
+func TestIssue59603(t *testing.T) {
+       fset := token.NewFileSet()
+       imports := make(testImporter)
+       conf := Config{
+               Error:    func(err error) { t.Log(err) }, // don't exit after first error
+               Importer: imports,
+       }
+       makePkg := func(path, src string) {
+               f := mustParse(fset, path, src)
+               pkg, _ := conf.Check(path, fset, []*ast.File{f}, nil) // errors logged via conf.Error
+               imports[path] = pkg
+       }
+
+       const libSrc = `
+package a
+const C = foo
+`
+
+       const mainSrc = `
+package main
+import "a"
+const _ = a.C
+`
+
+       makePkg("a", libSrc)
+       makePkg("main", mainSrc) // don't crash when type-checking this package
+}
+
 func TestLookupFieldOrMethodOnNil(t *testing.T) {
        // LookupFieldOrMethod on a nil type is expected to produce a run-time panic.
        defer func() {