diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/trans/enumerate.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/trans/enumerate.cpp b/src/trans/enumerate.cpp index 479fc661..899b3b82 100644 --- a/src/trans/enumerate.cpp +++ b/src/trans/enumerate.cpp @@ -951,7 +951,14 @@ namespace { best_impl = &impl; bool is_spec = false; TU_MATCHA( (trait_vi), (ve), - (Constant, ), + (Constant, + auto it = impl.m_constants.find(e.item); + if( it == impl.m_constants.end() ) { + DEBUG("Constant " << e.item << " missing in trait " << e.trait << " for " << *e.type); + return false; + } + is_spec = it->second.is_specialisable; + ), (Static, auto it = impl.m_statics.find(e.item); if( it == impl.m_statics.end() ) { @@ -993,6 +1000,12 @@ namespace { TU_MATCHA( (trait_vi), (ve), (Constant, + auto it = impl.m_constants.find(e.item); + if( it != impl.m_constants.end() ) + { + DEBUG("Found impl" << impl.m_params.fmt_args() << " " << impl.m_type); + return EntPtr { &it->second.data }; + } TODO(sp, "Associated constant - " << path); ), (Static, |