@@ -629,24 +629,24 @@ exprt verilog_typecheck_exprt::convert_expr_function_call(
629629 if (expr.is_system_function_call ())
630630 return convert_system_function (expr);
631631
632- if (expr.function ().id ()!=ID_symbol )
632+ if (expr.function ().id () != ID_verilog_identifier )
633633 {
634634 throw errort ().with_location (expr.source_location ())
635- << " expected symbol as function argument " ;
635+ << " expected identifier as function" ;
636636 }
637637
638- symbol_exprt &f_op= to_symbol_expr ( expr.function () );
638+ exprt &f_op = expr.function ();
639639
640- const irep_idt &identifier = f_op. get_identifier ();
640+ const irep_idt &base_name = to_verilog_identifier_expr ( f_op). base_name ();
641641
642- std::string full_identifier=
643- id2string (module_identifier)+ " ." + id2string (identifier );
642+ std::string full_identifier =
643+ id2string (module_identifier) + " ." + id2string (base_name );
644644
645645 const symbolt *symbol;
646646 if (ns.lookup (full_identifier, symbol))
647647 {
648648 throw errort ().with_location (f_op.source_location ())
649- << " unknown function `" << identifier << " '" ;
649+ << " unknown function `" << base_name << " '" ;
650650 }
651651
652652 if (symbol->type .id ()!=ID_code)
@@ -656,9 +656,8 @@ exprt verilog_typecheck_exprt::convert_expr_function_call(
656656 }
657657
658658 const code_typet &code_type=to_code_type (symbol->type );
659-
660- f_op.type ()=code_type;
661- f_op.set (ID_identifier, full_identifier);
659+
660+ f_op = symbol->symbol_expr ().with_source_location (f_op);
662661 expr.type ()=code_type.return_type ();
663662
664663 if (code_type.return_type ().id ()==ID_empty)
@@ -1220,9 +1219,10 @@ exprt verilog_typecheck_exprt::convert_nullary_expr(nullary_exprt expr)
12201219 {
12211220 return convert_constant (to_constant_expr (std::move (expr)));
12221221 }
1223- else if (expr.id ()==ID_symbol )
1222+ else if (expr.id () == ID_verilog_identifier )
12241223 {
1225- return convert_symbol (to_symbol_expr (std::move (expr)), {});
1224+ return convert_verilog_identifier (
1225+ to_verilog_identifier_expr (std::move (expr)), {});
12261226 }
12271227 else if (expr.id ()==ID_verilog_star_event)
12281228 {
@@ -1270,9 +1270,10 @@ Function: verilog_typecheck_exprt::resolve
12701270
12711271\*******************************************************************/
12721272
1273- const symbolt *verilog_typecheck_exprt::resolve (const symbol_exprt &expr)
1273+ const symbolt *
1274+ verilog_typecheck_exprt::resolve (const verilog_identifier_exprt &expr)
12741275{
1275- const irep_idt &base_name = expr.get_identifier ();
1276+ const irep_idt &base_name = expr.base_name ();
12761277
12771278 // in a task or function? Try local ones first
12781279 if (function_or_task_name!=" " )
@@ -1322,12 +1323,12 @@ Function: verilog_typecheck_exprt::convert_symbol
13221323
13231324\*******************************************************************/
13241325
1325- exprt verilog_typecheck_exprt::convert_symbol (
1326- symbol_exprt expr,
1326+ exprt verilog_typecheck_exprt::convert_verilog_identifier (
1327+ verilog_identifier_exprt expr,
13271328 const std::optional<typet> &implicit_net_type)
13281329{
13291330 auto symbol = resolve (expr);
1330- auto base_name = expr.get_identifier ();
1331+ auto base_name = expr.base_name ();
13311332
13321333 if (symbol != nullptr )
13331334 {
@@ -2959,12 +2960,13 @@ exprt verilog_typecheck_exprt::convert_binary_expr(binary_exprt expr)
29592960 auto location = expr.source_location ();
29602961 auto &package_scope = to_verilog_package_scope_expr (expr);
29612962
2962- if (package_scope.identifier ().id () != ID_symbol )
2963+ if (package_scope.identifier ().id () != ID_verilog_identifier )
29632964 throw errort ().with_location (location)
2964- << expr.id () << " expects symbol on the rhs" ;
2965+ << expr.id () << " expects verilog_identifier on the rhs" ;
29652966
29662967 auto package_base = package_scope.package_base_name ();
2967- auto rhs_base = package_scope.identifier ().get (ID_base_name);
2968+ auto rhs_base =
2969+ to_verilog_identifier_expr (package_scope.identifier ()).base_name ();
29682970
29692971 // stitch together
29702972 irep_idt full_identifier =
0 commit comments