@@ -133,25 +133,26 @@ void verilog_typecheckt::typecheck_port_connections(
133133 to_verilog_named_port_connection (connection);
134134
135135 exprt &value = named_port_connection.value ();
136- const irep_idt &name = named_port_connection.port ().get (ID_identifier);
136+ const irep_idt &base_name =
137+ to_symbol_expr (named_port_connection.port ()).get_identifier ();
137138
138139 bool found=false ;
139140
140- std::string identifier =
141- id2string (symbol.module )+ " ." + id2string (name );
141+ std::string full_identifier =
142+ id2string (symbol.module ) + " ." + id2string (base_name );
142143
143- named_port_connection.port ().set (ID_identifier, identifier);
144+ to_symbol_expr (named_port_connection.port ())
145+ .set_identifier (full_identifier);
144146
145- if (assigned_ports.find (name)!=
146- assigned_ports.end ())
147+ if (assigned_ports.find (base_name) != assigned_ports.end ())
147148 {
148149 throw errort ().with_location (connection.source_location ())
149- << " port name " << name << " assigned twice" ;
150+ << " port name " << base_name << " assigned twice" ;
150151 }
151152
152153 for (auto &port : ports)
153154 {
154- if (port.get (ID_identifier ) == identifier )
155+ if (port.identifier ( ) == full_identifier )
155156 {
156157 found=true ;
157158 typecheck_port_connection (value, port);
@@ -163,10 +164,10 @@ void verilog_typecheckt::typecheck_port_connections(
163164 if (!found)
164165 {
165166 throw errort ().with_location (connection.source_location ())
166- << " port name " << identifier << " not found" ;
167+ << " port name " << base_name << " not found" ;
167168 }
168169
169- assigned_ports.insert (identifier );
170+ assigned_ports.insert (base_name );
170171 }
171172 }
172173 else // just a list without names
0 commit comments