@@ -102,9 +102,8 @@ void verilog_typecheckt::collect_symbols(const typet &type)
102102    if (enum_type.has_base_type ())
103103      collect_symbols (enum_type.base_type ());
104104
105-     //  The default base type is 'int'.
106-     auto  base_type =
107-       enum_type.has_base_type () ? enum_type.base_type () : signedbv_typet (32 );
105+     //  convert the type now
106+     auto  converted_type = convert_type (enum_type);
108107
109108    //  Add the enum names to the symbol table for subsequent elaboration.
110109    //  Values are given, or the previous plus one, starting with value '0'.
@@ -113,13 +112,17 @@ void verilog_typecheckt::collect_symbols(const typet &type)
113112    for (auto  &enum_name : enum_type.enum_names ())
114113    {
115114      if (enum_name.value ().is_not_nil ())
116-         initializer = enum_name.value ();
115+       {
116+         exprt tmp = enum_name.value ();
117+         convert_expr (tmp);
118+         initializer = std::move (tmp);
119+       }
117120
118-       exprt value = typecast_exprt (initializer, base_type );
121+       exprt value = typecast_exprt (initializer, converted_type );
119122
120123      const  auto  base_name = enum_name.base_name ();
121124      const  auto  identifier = hierarchical_identifier (base_name);
122-       symbolt enum_name_symbol (identifier, base_type , mode);
125+       symbolt enum_name_symbol (identifier, converted_type , mode);
123126      enum_name_symbol.module  = module_identifier;
124127      enum_name_symbol.base_name  = base_name;
125128      enum_name_symbol.value  = std::move (value);
@@ -128,8 +131,8 @@ void verilog_typecheckt::collect_symbols(const typet &type)
128131      add_symbol (std::move (enum_name_symbol));
129132
130133      initializer = plus_exprt (
131-         typecast_exprt (initializer, base_type ),
132-         typecast_exprt (from_integer (1 , integer_typet ()), base_type ));
134+         typecast_exprt (initializer, converted_type ),
135+         typecast_exprt (from_integer (1 , integer_typet ()), converted_type ));
133136    }
134137  }
135138}
0 commit comments