• Robert Griesemer's avatar
    go/types: use check.lookup consistently where possible (cleanup) · caf96f7d
    Robert Griesemer authored
    This CL converts the last call to scope.LookupParent with no position
    information to a check.lookup call that respects position information
    provided by Eval (there's one more LookupParent call that cannot be
    converted, see the respective comment in the code).
    
    In this case, the lookup is needed to determine the variable on the
    LHS of an assignment, for adjustment of its `used` information.
    
    Outside a types.Eval call, i.e., during normal type-checking, there
    is no difference between this new code and the old code.
    
    While in a types.Eval call, it's important to use the correct position
    to look up the relevant variable. If token.NoPos were used, one might
    find another variable with the same name, declared later in the scope.
    
    Caveat: Types.Eval only accepts expressions, and it's currently not
    possible to evaluate assignments (except via function literals, but
    then the scope is different). That is, this change is a fix for a
    potential future bug, and for now a no-op.
    
    Change-Id: I28db1fe1202c07e3f7b3fadfd185728afb9b2ae7
    Reviewed-on: https://go-review.googlesource.com/85199Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
    caf96f7d
assignments.go 8.44 KB