From b02498f4c8b804e1469a91e6c0510166293774d3 Mon Sep 17 00:00:00 2001 From: Daniel Kroening Date: Sun, 30 Nov 2025 22:57:48 -0800 Subject: [PATCH] Verilog: use value field for type parameter declarators The type in a type parameter assignment is now stored in the value field of the parameter declarator. --- src/verilog/parser.y | 3 ++- src/verilog/verilog_elaborate.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/verilog/parser.y b/src/verilog/parser.y index af3964c6b..fa856ce8d 100644 --- a/src/verilog/parser.y +++ b/src/verilog/parser.y @@ -2032,7 +2032,8 @@ type_assignment: param_identifier '=' data_type auto base_name = stack_expr($1).id(); stack_expr($$).set(ID_identifier, base_name); stack_expr($$).set(ID_base_name, base_name); - addswap($$, ID_type, $3); + stack_expr($$).set(ID_value, type_exprt{stack_type($3)}); + stack_expr($$).type() = typet{ID_type}; // add to the scope as a type name PARSER.scopes.add_name(base_name, "", verilog_scopet::TYPEDEF); diff --git a/src/verilog/verilog_elaborate.cpp b/src/verilog/verilog_elaborate.cpp index 9c22bf2b8..514cbddc3 100644 --- a/src/verilog/verilog_elaborate.cpp +++ b/src/verilog/verilog_elaborate.cpp @@ -102,7 +102,8 @@ void verilog_typecheckt::collect_symbols( if(type.id() == ID_type) { // much like a typedef - auto symbol_type = to_be_elaborated_typet{declarator.type()}; + auto symbol_type = + to_be_elaborated_typet{to_type_expr(declarator.value()).type()}; type_symbolt symbol{full_identifier, symbol_type, mode};