From ce4884ed43653b01a0db38fc01ddc3f4a178959e Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Tue, 12 Jun 2018 11:02:18 +0000 Subject: [PATCH] C++ front-end: maintain #array_ini flag --- regression/systemc/Array2/test.desc | 2 +- src/cpp/cpp_typecheck_code.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/regression/systemc/Array2/test.desc b/regression/systemc/Array2/test.desc index 839148c295a..d091759e812 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 21d0fe6aae7..a4039b804de 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());