summaryrefslogtreecommitdiff
path: root/src/resolve/use.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/resolve/use.cpp')
-rw-r--r--src/resolve/use.cpp25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/resolve/use.cpp b/src/resolve/use.cpp
index 77304c1e..43bd074f 100644
--- a/src/resolve/use.cpp
+++ b/src/resolve/use.cpp
@@ -59,21 +59,21 @@ void Resolve_Use_Mod(const ::AST::Crate& crate, ::AST::Module& mod, ::AST::Path
TRACE_FUNCTION_F("path = " << path << ", mod.path() = " << mod.path());
for(auto& use_stmt : mod.imports())
{
- const Span span;
- use_stmt.data = Resolve_Use_AbsolutisePath(span, path, mv$(use_stmt.data));
- if( !use_stmt.data.m_class.is_Absolute() )
+ const Span& span = use_stmt.data.sp;
+ use_stmt.data.path = Resolve_Use_AbsolutisePath(span, path, mv$(use_stmt.data.path));
+ if( !use_stmt.data.path.m_class.is_Absolute() )
BUG(span, "Use path is not absolute after absolutisation");
// TODO: Is this a valid assertion?
- if( use_stmt.data.crate() != "" )
+ if( use_stmt.data.path.crate() != "" )
BUG(span, "Use path crate was set before resolve");
- use_stmt.data.bind( Resolve_Use_GetBinding(span, crate, use_stmt.data) );
+ use_stmt.data.path.bind( Resolve_Use_GetBinding(span, crate, use_stmt.data.path) );
// - If doing a glob, ensure the item type is valid
if( use_stmt.name == "" )
{
- TU_MATCH_DEF(::AST::PathBinding, (use_stmt.data.binding()), (e),
+ TU_MATCH_DEF(::AST::PathBinding, (use_stmt.data.path.binding()), (e),
(
ERROR(span, E0000, "Wildcard import of invalid item type");
),
@@ -140,27 +140,26 @@ void Resolve_Use_Mod(const ::AST::Crate& crate, ::AST::Module& mod, ::AST::Path
// Imports
for( const auto& imp : mod.imports() )
{
+ const Span& sp2 = imp.data.sp;
if( imp.name == des_item_name ) {
DEBUG("- Named import " << imp.name << " = " << imp.data);
- if( imp.data.binding().is_Unbound() ) {
+ if( imp.data.path.binding().is_Unbound() ) {
DEBUG(" > Needs resolve");
- const Span sp2;
// TODO: Handle possibility of recursion
- return Resolve_Use_GetBinding(sp2, crate, Resolve_Use_AbsolutisePath(sp2, mod.path(), imp.data));
+ return Resolve_Use_GetBinding(sp2, crate, Resolve_Use_AbsolutisePath(sp2, mod.path(), imp.data.path));
}
else {
- return imp.data.binding().clone();
+ return imp.data.path.binding().clone();
}
}
if( imp.is_pub && imp.name == "" ) {
- const Span sp2;
// INEFFICIENT! Resolves and throws away the result (because we can't/shouldn't mutate here)
::AST::PathBinding binding_;
- const auto* binding = &imp.data.binding();
+ const auto* binding = &imp.data.path.binding();
if( binding->is_Unbound() ) {
DEBUG("Temp resolving wildcard " << imp.data);
// TODO: Handle possibility of recursion
- binding_ = Resolve_Use_GetBinding(sp2, crate, Resolve_Use_AbsolutisePath(sp2, mod.path(), imp.data));
+ binding_ = Resolve_Use_GetBinding(sp2, crate, Resolve_Use_AbsolutisePath(sp2, mod.path(), imp.data.path));
binding = &binding_;
}