File tree Expand file tree Collapse file tree 4 files changed +9
-5
lines changed Expand file tree Collapse file tree 4 files changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -662,7 +662,7 @@ enum_list : enum_element
662662enum_element: IDENTIFIER_Token
663663 {
664664 $$=$1 ;
665- PARSER.module -> enum_set .insert (stack_expr ($1 ).id_string ());
665+ PARSER.parse_tree . enum_set .insert (stack_expr ($1 ).id_string ());
666666 PARSER.module ->add_enum (
667667 smv_identifier_exprt{stack_expr ($1 ).id (), PARSER.source_location ()});
668668 }
@@ -905,6 +905,7 @@ identifier : IDENTIFIER_Token
905905
906906variable_identifier: complex_identifier
907907 {
908+ // Could be a variable, or an enum
908909 auto id = merge_complex_identifier (stack_expr ($1 ));
909910 init ($$, ID_smv_identifier);
910911 stack_expr ($$).set (ID_identifier, id);
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ Function: smv_parse_treet::swap
2323void smv_parse_treet::swap (smv_parse_treet &smv_parse_tree)
2424{
2525 smv_parse_tree.modules .swap (modules);
26+ smv_parse_tree.enum_set .swap (enum_set);
2627}
2728
2829/* ******************************************************************\
Original file line number Diff line number Diff line change @@ -271,10 +271,11 @@ class smv_parse_treet
271271 auto location = expr.source_location ();
272272 items.emplace_back (itemt::ENUM, std::move (expr), std::move (location));
273273 }
274-
275- enum_sett enum_set;
276274 };
277-
275+
276+ // enums are global
277+ enum_sett enum_set;
278+
278279 typedef std::unordered_map<irep_idt, modulet, irep_id_hash> modulest;
279280
280281 modulest modules;
Original file line number Diff line number Diff line change @@ -1895,7 +1895,8 @@ void smv_typecheckt::convert(exprt &expr)
18951895 identifier.find (" ::" ) == std::string::npos, " conversion is done once" );
18961896
18971897 // enum or variable?
1898- if (modulep->enum_set .find (identifier) == modulep->enum_set .end ())
1898+ if (
1899+ smv_parse_tree.enum_set .find (identifier) == smv_parse_tree.enum_set .end ())
18991900 {
19001901 std::string id = module + " ::var::" + identifier;
19011902
You can’t perform that action at this time.
0 commit comments