From 1daf466b15e18617c1627da1047d8d2445c6b2e7 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Sat, 9 Jun 2018 07:40:49 +0000 Subject: [PATCH] Use resolver to translate cpp_name to scoped base_name --- regression/cpp/enum1/test.desc | 2 +- src/cpp/cpp_typecheck_enum_type.cpp | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/regression/cpp/enum1/test.desc b/regression/cpp/enum1/test.desc index 0daa9695017..3862862ffd3 100644 --- a/regression/cpp/enum1/test.desc +++ b/regression/cpp/enum1/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +CORE main.cpp -std=c++11 ^EXIT=0$ diff --git a/src/cpp/cpp_typecheck_enum_type.cpp b/src/cpp/cpp_typecheck_enum_type.cpp index c3c1130102d..5753285f775 100644 --- a/src/cpp/cpp_typecheck_enum_type.cpp +++ b/src/cpp/cpp_typecheck_enum_type.cpp @@ -92,6 +92,8 @@ void cpp_typecheckt::typecheck_enum_type(typet &type) bool anonymous=!enum_type.has_tag(); irep_idt base_name; + cpp_save_scopet save_scope(cpp_scopes); + if(anonymous) { // we fabricate a tag based on the enum constants contained @@ -101,14 +103,11 @@ void cpp_typecheckt::typecheck_enum_type(typet &type) { const cpp_namet &tag=enum_type.tag(); - if(tag.is_simple_name()) - base_name=tag.get_base_name(); - else - { - error().source_location=type.source_location(); - error() << "enum tag is expected to be a simple name" << eom; - throw 0; - } + cpp_template_args_non_tct template_args; + template_args.make_nil(); + + cpp_typecheck_resolvet resolver(*this); + resolver.resolve_scope(tag, base_name, template_args); } bool has_body=enum_type.has_body();