diff --git a/regression/systemc/Array2/test.desc b/regression/systemc/Array2/test.desc index 839148c295..d091759e81 100644 --- a/regression/systemc/Array2/test.desc +++ b/regression/systemc/Array2/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +CORE main.cpp -DNO_IO -DNO_STRING ^EXIT=0$ diff --git a/src/cpp/cpp_typecheck_code.cpp b/src/cpp/cpp_typecheck_code.cpp index 21d0fe6aae..a4039b804d 100644 --- a/src/cpp/cpp_typecheck_code.cpp +++ b/src/cpp/cpp_typecheck_code.cpp @@ -177,7 +177,12 @@ void cpp_typecheckt::typecheck_member_initializer(codet &code) // Let's first typecheck the operands. Forall_operands(it, code) + { + const bool has_array_ini = it->get_bool("#array_ini"); typecheck_expr(*it); + if(has_array_ini) + it->set("#array_ini", true); + } // The initializer may be a data member (non-type) // or a parent class (type). @@ -323,9 +328,6 @@ void cpp_typecheckt::typecheck_member_initializer(codet &code) // it's a data member already_typechecked(symbol_expr); - Forall_operands(it, code) - already_typechecked(*it); - exprt call= cpp_constructor(code.source_location(), symbol_expr, code.operands());