aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Findley <rfindley@google.com>2023-04-13 10:22:46 -0400
committerRobert Findley <rfindley@google.com>2023-04-13 15:59:36 +0000
commit1312d9e6da8d5d41bf8f2238c166deb1c5db10c3 (patch)
treef4949605cca207b5a5693f657a5071200bcaa364 /src
parent0742e6dbc08f1ac5e7de966dcdf43cea03117c0c (diff)
downloadgo-1312d9e6da8d5d41bf8f2238c166deb1c5db10c3.tar.xz
go/types,types2: add a test for const initializer panic
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>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/compile/internal/types2/api_test.go27
-rw-r--r--src/go/types/api_test.go28
2 files changed, 55 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/types2/api_test.go b/src/cmd/compile/internal/types2/api_test.go
index 41ee641f59..e824f56fae 100644
--- a/src/cmd/compile/internal/types2/api_test.go
+++ b/src/cmd/compile/internal/types2/api_test.go
@@ -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() {
diff --git a/src/go/types/api_test.go b/src/go/types/api_test.go
index 7cfad422e9..7a8c63a43b 100644
--- a/src/go/types/api_test.go
+++ b/src/go/types/api_test.go
@@ -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() {