diff options
Diffstat (limited to 'src/trans/enumerate.cpp')
-rw-r--r-- | src/trans/enumerate.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/trans/enumerate.cpp b/src/trans/enumerate.cpp index 25513c17..4de920db 100644 --- a/src/trans/enumerate.cpp +++ b/src/trans/enumerate.cpp @@ -268,11 +268,24 @@ namespace { } TRACE_FUNCTION_F(ty << " - " << (mode == Mode::Shallow ? "Shallow" : (mode == Mode::Normal ? "Normal" : "Deep"))); - if( mode != Mode::Shallow ) + if( mode == Mode::Shallow ) + { + TU_MATCH_DEF(::HIR::TypeRef::Data, (ty.m_data), (te), + ( + ), + (Pointer, + visit_type(*te.inner, Mode::Shallow); + ), + (Borrow, + visit_type(*te.inner, Mode::Shallow); + ) + ) + } + else { if( active_set.find(&ty) != active_set.end() ) { // TODO: Handle recursion - DEBUG("- Type recursion with " << ty); + BUG(Span(), "- Type recursion with " << ty); return ; } active_set.insert( &ty ); |