A tree that fully encloses this scope.
A tree that fully encloses this scope.
Traverses the scope tree from inner to outer and returns
the innermost scope, that is visible from pos
.
Traverses the scope tree from inner to outer and returns
the innermost scope, that is visible from pos
.
Traverses the scope tree from inner to outer and returns
the innermost scope, that is visible from t
.
Traverses the scope tree from inner to outer and returns
the innermost scope, that is visible from t
.
Is s
visible in this scope, but not in outerScope
?
Is s
visible in this scope, but not in outerScope
?
Symbols from which we know that they are visible in this scope.
Symbols from which we know that they are visible in this scope.
Returns a list of visible symbols whose name is equal
to name
.
Returns a list of visible symbols whose name is equal
to name
.
TODO: Handle symbols from other CUs
A scope that contains this scope in the "physical" structure.
A scope that contains this scope in the "physical" structure.
The outermost scope known.
The outermost scope known. Usually the package scope of the CU.
Returns a name based on preferred
that does not collide
with other visible symbols.
Returns a name based on preferred
that does not collide
with other visible symbols.
Is s
visible (and accessible) from this scope?
Is s
visible (and accessible) from this scope?
Scopes that are visible from this scope.
Scopes that are visible from this scope.
Returns a copy of this scope with syms
registered as known
symbols.
Returns a copy of this scope with syms
registered as known
symbols. Also propagates all symbols of syms
, that are not introduces
in this scope to outerScope
.
Register symbols as known symbols increases the performance of sees(s)
and helps to reduce the number of false negatives. This is because it is
easier to determine if a symbol is introduced by a scope than if it is
not introduced by it.
Declarations of values and types that are not class members are transformed to LocalScopes. This also includes parameter lists and bindings in
case
statements.One LocalScope can also represent more than one declaration if it is constructed from parameter lists or bindings.