]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix lookup package of redeclared dot import symbol
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Wed, 14 Jul 2021 17:56:44 +0000 (00:56 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Thu, 15 Jul 2021 17:35:20 +0000 (17:35 +0000)
commitc1cc9f9c3d5ed789a080ef9f8dd9c11eca7e2026
tree63966f1e0757fbbc640ed14b26bf683e508b7f42
parent21a04e33353316635b5f3351e807916f3bb1e844
cmd/compile: fix lookup package of redeclared dot import symbol

The compiler is relying on Sym.Def field to lookup symbol package in
DotImportRefs map. But the Sym.Def field is clear whenever the compiler
finish processing a file. If the dot import happen in file A, then the
redeclaration happen in file B, then the symbol lookup in file B will
see a nil Sym.Def, that cause the compiler crashes.

To fix this, we can interate over DotImportRefs and check for matching
symbol name and return the corresponding package. Though this operation
can be slow, but it only happens in invalid program, when printing error
message, so it's not worth to optimize it further.

Fixes #47201

Change-Id: I4ca1cb0a8e7432b19cf71434592a4cbb58d54adf
Reviewed-on: https://go-review.googlesource.com/c/go/+/334589
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/typecheck/dcl.go
test/fixedbugs/issue47201.dir/a.go [new file with mode: 0644]
test/fixedbugs/issue47201.dir/b.go [new file with mode: 0644]
test/fixedbugs/issue47201.go [new file with mode: 0644]