module volta.postparse.importresolver
Module containing the ImportResolver class.
Code Map
//! Module containing the ImportResolver class.
module volta.postparse.importresolver;
alias GetMod = ir.Module delegate(ir.QualifiedName);
//! Resolves imports on a single module.
class ImportResolver : ScopeManager, Pass
{
public:
this(errSink: ErrorSink, getMod: GetMod) { }
fn transform(m: ir.Module) { }
fn close() { }
fn enter(i: ir.Import) Status { }
//! Takes a import that maps the module to a symbol in the current scope.
fn handleRebind(i: ir.Import) { }
//! Handles a import with symbol aliases.
fn handleAliases(i: ir.Import) { }
//! Most common imports.
fn handleRegularAndStatic(i: ir.Import) { }
//! Used for adding in scopes from static imports
fn buildOrReturnScope(parent: ir.Scope, node: ir.Node, name: string, lowPriority: bool) ir.Scope { }
}
class ImportResolver : ScopeManager, Pass
Resolves imports on a single module.
fn handleRebind(i: ir.Import)
Takes a import that maps the module to a symbol in the current scope.
import a = b;
fn handleAliases(i: ir.Import)
Handles a import with symbol aliases.
import a : b, c; import a = b : c, d;
fn handleRegularAndStatic(i: ir.Import)
Most common imports.
import a; static import a;
fn buildOrReturnScope(parent: ir.Scope, node: ir.Node, name: string, lowPriority: bool) ir.Scope
Used for adding in scopes from static imports
If scope of name exists in parent, that will be used.
Otherwise one will be created, see the lowPriority parameter
for behaviour when a non-scope store of name already exists
in parent.
Parameters
| parent |
The scope to build in. |
| node |
The node that introduces the new scope. |
| name |
The name of the scope to add. |
| lowPriority |
If |