Skip to content

Commit

Permalink
go/types: fix internal documentation and strengthen assumptions
Browse files Browse the repository at this point in the history
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 <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Alan Donovan <[email protected]>
  • Loading branch information
griesemer committed May 2, 2018
1 parent 73c7378 commit 0dcdbc7
Showing 1 changed file with 3 additions and 9 deletions.
12 changes: 3 additions & 9 deletions src/go/types/resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -479,8 +479,8 @@ func (check *Checker) collectObjects() {
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
Expand All @@ -496,15 +496,9 @@ func (check *Checker) resolveBaseTypeName(name *ast.Ident) *TypeName {
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
}
Expand Down

0 comments on commit 0dcdbc7

Please sign in to comment.