summaryrefslogtreecommitdiff
path: root/src/resolve/absolute.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/resolve/absolute.cpp')
-rw-r--r--src/resolve/absolute.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/resolve/absolute.cpp b/src/resolve/absolute.cpp
index 45e70e98..103497e6 100644
--- a/src/resolve/absolute.cpp
+++ b/src/resolve/absolute.cpp
@@ -1257,20 +1257,21 @@ void Resolve_Absolute_Mod( Context item_context, ::AST::Module& mod )
for(auto& impl : mod.impls())
{
- if( ! impl.def().type().is_valid() )
+ auto& def = impl.def();
+ if( ! def.type().is_valid() )
{
- item_context.push(impl.def().params(), GenericSlot::Level::Top);
- Resolve_Absolute_Generic(item_context, impl.def().params());
- assert( impl.def().trait().is_valid() );
- Resolve_Absolute_Path(item_context, Span(), Context::LookupMode::Type, impl.def().trait());
+ item_context.push(def.params(), GenericSlot::Level::Top);
+ Resolve_Absolute_Generic(item_context, def.params());
+ assert( def.trait().ent.is_valid() );
+ Resolve_Absolute_Path(item_context, def.trait().sp, Context::LookupMode::Type, def.trait().ent);
if( impl.items().size() != 0 ) {
ERROR(Span(), E0000, "impl Trait for .. with methods");
}
- item_context.pop(impl.def().params());
+ item_context.pop(def.params());
- const_cast< ::AST::Trait*>(impl.def().trait().binding().as_Trait().trait_)->set_is_marker();
+ const_cast< ::AST::Trait*>(def.trait().ent.binding().as_Trait().trait_)->set_is_marker();
}
else
{
@@ -1279,14 +1280,14 @@ void Resolve_Absolute_Mod( Context item_context, ::AST::Module& mod )
Resolve_Absolute_Generic(item_context, impl.def().params());
Resolve_Absolute_Type(item_context, impl.def().type());
- if( impl.def().trait().is_valid() ) {
- Resolve_Absolute_Path(item_context, Span(), Context::LookupMode::Type, impl.def().trait());
+ if( def.trait().ent.is_valid() ) {
+ Resolve_Absolute_Path(item_context, def.trait().sp, Context::LookupMode::Type, def.trait().ent);
}
Resolve_Absolute_ImplItems(item_context, impl.items());
- item_context.pop(impl.def().params());
- item_context.pop_self( impl.def().type() );
+ item_context.pop(def.params());
+ item_context.pop_self( def.type() );
}
}
@@ -1297,9 +1298,9 @@ void Resolve_Absolute_Mod( Context item_context, ::AST::Module& mod )
Resolve_Absolute_Generic(item_context, impl_def.params());
Resolve_Absolute_Type(item_context, impl_def.type());
- if( !impl_def.trait().is_valid() )
+ if( !impl_def.trait().ent.is_valid() )
BUG(Span(), "Encountered negative impl with no trait");
- Resolve_Absolute_Path(item_context, Span(), Context::LookupMode::Type, impl_def.trait());
+ Resolve_Absolute_Path(item_context, impl_def.trait().sp, Context::LookupMode::Type, impl_def.trait().ent);
// No items