Imported (incl. dot-imported) objects are always in file scope,
never in package scope. Fix misleading comment.
Package-scope declared objects must have objMap entry by
construction (of that map). Remove unnecessary check and
corresponding misleading comment.
Found while investigating solutions for @23203.
Change-Id: Idadfdd1576681ae56e11daa27bdcee2c73733c41
Reviewed-on: https://go-review.googlesource.com/110916
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
func (check *Checker) resolveBaseTypeName(name *ast.Ident) *TypeName {
var path []*TypeName
for {
- // name must denote an object found in the current package
- // (it could be explicitly declared or dot-imported)
+ // name must denote an object found in the current package scope
+ // (note that dot-imported objects are not in the package scope!)
obj := check.pkg.scope.Lookup(name.Name)
if obj == nil {
return nil
return nil
}
- // tname must have been explicitly declared
- // (dot-imported objects are not in objMap)
- tdecl := check.objMap[tname]
- if tdecl == nil {
- return nil
- }
-
// we're done if tdecl defined tname as a new type
// (rather than an alias)
+ tdecl := check.objMap[tname] // must exist for objects in package scope
if !tdecl.alias {
return tname
}