summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-10-10 19:43:50 +0800
committerJohn Hodge <tpg@mutabah.net>2016-10-10 19:43:50 +0800
commit15313ca2b6131541380d94c79afcc1b6a9583db3 (patch)
tree056ed3dd19b59ad22cc81ae716b197341c97fefb /src
parent666df501c9c8ae0a22ae8297c90e16f40baf6959 (diff)
downloadmrust-15313ca2b6131541380d94c79afcc1b6a9583db3.tar.gz
HIR Bind - Bind defaulted path params
Diffstat (limited to 'src')
-rw-r--r--src/hir_conv/bind.cpp8
-rw-r--r--src/hir_typeck/helpers.cpp4
2 files changed, 9 insertions, 3 deletions
diff --git a/src/hir_conv/bind.cpp b/src/hir_conv/bind.cpp
index 576941ca..34c93930 100644
--- a/src/hir_conv/bind.cpp
+++ b/src/hir_conv/bind.cpp
@@ -339,10 +339,9 @@ namespace {
}
void visit_type(::HIR::TypeRef& ty) override
{
+ //TRACE_FUNCTION_F(ty);
static Span _sp = Span();
const Span& sp = _sp;
-
- ::HIR::Visitor::visit_type(ty);
TU_IFLET(::HIR::TypeRef::Data, ty.m_data, Path, e,
TU_MATCH( ::HIR::Path::Data, (e.path.m_data), (pe),
@@ -355,10 +354,12 @@ namespace {
(Struct,
fix_param_count(sp, pe, e3.m_params, pe.m_params);
e.binding = ::HIR::TypeRef::TypePathBinding::make_Struct(&e3);
+ DEBUG("- " << ty);
),
(Enum,
fix_param_count(sp, pe, e3.m_params, pe.m_params);
e.binding = ::HIR::TypeRef::TypePathBinding::make_Enum(&e3);
+ DEBUG("- " << ty);
),
(Trait,
ty.m_data = ::HIR::TypeRef::Data::make_TraitObject({ ::HIR::TraitPath { mv$(pe), {}, {} }, {}, {} });
@@ -390,8 +391,9 @@ namespace {
}
)
)
- DEBUG(ty);
)
+
+ ::HIR::Visitor::visit_type(ty);
}
void visit_expr(::HIR::ExprPtr& expr) override
diff --git a/src/hir_typeck/helpers.cpp b/src/hir_typeck/helpers.cpp
index e27d2b00..313d6269 100644
--- a/src/hir_typeck/helpers.cpp
+++ b/src/hir_typeck/helpers.cpp
@@ -2194,6 +2194,7 @@ bool TraitResolution::find_trait_impls_crate(const Span& sp,
for(const auto& fld : se)
{
const auto& fld_ty_mono = monomorph_get(fld.ent);
+ DEBUG("Struct::Tuple " << fld_ty_mono);
res &= type_impls_trait(fld_ty_mono);
if( res == ::HIR::Compare::Unequal )
return ::HIR::Compare::Unequal;
@@ -2203,6 +2204,7 @@ bool TraitResolution::find_trait_impls_crate(const Span& sp,
for(const auto& fld : se)
{
const auto& fld_ty_mono = monomorph_get(fld.second.ent);
+ DEBUG("Struct::Named '" << fld.first << "' " << fld_ty_mono);
res &= type_impls_trait(fld_ty_mono);
if( res == ::HIR::Compare::Unequal )
@@ -2225,6 +2227,7 @@ bool TraitResolution::find_trait_impls_crate(const Span& sp,
for(const auto& fld : ve)
{
const auto& fld_ty_mono = monomorph_get(fld.ent);
+ DEBUG("Enum '" << var.first << "'::Tuple " << fld_ty_mono);
res &= type_impls_trait(fld_ty_mono);
if( res == ::HIR::Compare::Unequal )
return ::HIR::Compare::Unequal;
@@ -2234,6 +2237,7 @@ bool TraitResolution::find_trait_impls_crate(const Span& sp,
for(const auto& fld : ve)
{
const auto& fld_ty_mono = monomorph_get(fld.second.ent);
+ DEBUG("Enum '" << var.first << "'::Struct '" << fld.first << "' " << fld_ty_mono);
res &= type_impls_trait(fld_ty_mono);
if( res == ::HIR::Compare::Unequal )