diff options
author | John Hodge <tpg@mutabah.net> | 2016-08-31 19:37:09 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-08-31 19:37:09 +0800 |
commit | 09b5d7303ddc4638e2f2ba2a9037cb329784aacd (patch) | |
tree | 0523f3e0c4621823feee54fea41f4bcbbb611e3e | |
parent | 443e92160885b4b7c3b0c0777b98566b70639861 (diff) | |
download | mrust-09b5d7303ddc4638e2f2ba2a9037cb329784aacd.tar.gz |
HIR From AST - Trait binding
-rw-r--r-- | src/hir/from_ast.cpp | 4 | ||||
-rw-r--r-- | src/resolve/absolute.cpp | 6 |
2 files changed, 4 insertions, 6 deletions
diff --git a/src/hir/from_ast.cpp b/src/hir/from_ast.cpp index d992d547..359d6ed9 100644 --- a/src/hir/from_ast.cpp +++ b/src/hir/from_ast.cpp @@ -1089,9 +1089,7 @@ void LowerHIR_Module_Impls(const ::AST::Module& ast_mod, ::HIR::Crate& hir_crat const auto& pb = impl.def().trait().ent.binding(); ASSERT_BUG(Span(), pb.is_Trait(), "Binding for trait path in impl isn't a Trait - " << impl.def().trait().ent); ASSERT_BUG(Span(), pb.as_Trait().trait_ || pb.as_Trait().hir, "Trait pointer for trait path in impl isn't set"); - ASSERT_BUG(Span(), pb.as_Trait().trait_, "Trait pointer for trait path in impl isn't set"); - const auto& trait_def = *pb.as_Trait().trait_; - bool is_marker = trait_def.is_marker(); + bool is_marker = (pb.as_Trait().trait_ ? pb.as_Trait().trait_->is_marker() : pb.as_Trait().hir->m_is_marker); auto trait_path = LowerHIR_GenericPath(impl.def().trait().sp, impl.def().trait().ent); auto trait_name = mv$(trait_path.m_path); auto trait_args = mv$(trait_path.m_params); diff --git a/src/resolve/absolute.cpp b/src/resolve/absolute.cpp index 15401bc9..1457fa7e 100644 --- a/src/resolve/absolute.cpp +++ b/src/resolve/absolute.cpp @@ -692,7 +692,7 @@ namespace { pb = ::AST::PathBinding::make_Module({nullptr, &e}); ), (Trait, - pb = ::AST::PathBinding::make_Trait({nullptr/*, &e*/}); + pb = ::AST::PathBinding::make_Trait({nullptr, &e}); ), (TypeAlias, ), @@ -737,7 +737,7 @@ namespace { if( !n.args().is_empty() ) { trait_path.nodes().back().args() = mv$(n.args()); } - trait_path.bind( ::AST::PathBinding::make_Trait({nullptr}) ); + trait_path.bind( ::AST::PathBinding::make_Trait({nullptr, &e}) ); ::AST::Path new_path; const auto& next_node = path_abs.nodes[i+1]; @@ -821,7 +821,7 @@ namespace { throw ""; ), (Trait, - path.bind( ::AST::PathBinding::make_Trait({nullptr}) ); + path.bind( ::AST::PathBinding::make_Trait({nullptr, &e}) ); ), (Module, path.bind( ::AST::PathBinding::make_Module({nullptr, &e}) ); |