File tree Expand file tree Collapse file tree 3 files changed +8
-4
lines changed Expand file tree Collapse file tree 3 files changed +8
-4
lines changed Original file line number Diff line number Diff line change @@ -676,7 +676,7 @@ enum_list : enum_element
676676enum_element: IDENTIFIER_Token
677677 {
678678 $$=$1 ;
679- PARSER.module -> enum_set .insert (stack_expr ($1 ).id_string ());
679+ PARSER.parse_tree . enum_set .insert (stack_expr ($1 ).id_string ());
680680
681681 exprt expr (ID_smv_identifier);
682682 expr.set (ID_identifier, stack_expr ($1 ).id ());
@@ -951,6 +951,7 @@ identifier : IDENTIFIER_Token
951951
952952variable_identifier: complex_identifier
953953 {
954+ // Could be a variable, or an enum
954955 auto id = merge_complex_identifier (stack_expr ($1 ));
955956 init ($$, ID_smv_identifier);
956957 stack_expr ($$).set (ID_identifier, id);
Original file line number Diff line number Diff line change @@ -274,11 +274,13 @@ class smv_parse_treet
274274 }
275275
276276 mc_varst vars;
277- enum_sett enum_set;
278277
279278 std::list<irep_idt> ports;
280279 };
281-
280+
281+ // enums are global
282+ enum_sett enum_set;
283+
282284 typedef std::unordered_map<irep_idt, modulet, irep_id_hash> modulest;
283285
284286 modulest modules;
Original file line number Diff line number Diff line change @@ -1709,7 +1709,8 @@ void smv_typecheckt::convert(exprt &expr)
17091709 identifier.find (" ::" ) == std::string::npos, " conversion is done once" );
17101710
17111711 // enum or variable?
1712- if (modulep->enum_set .find (identifier) == modulep->enum_set .end ())
1712+ if (
1713+ smv_parse_tree.enum_set .find (identifier) == smv_parse_tree.enum_set .end ())
17131714 {
17141715 std::string id = module + " ::var::" + identifier;
17151716
You can’t perform that action at this time.
0 commit comments