typedef conversion visits nested types in statements

This commit is contained in:
Zachary Snow 2020-07-19 20:54:44 -06:00
parent 90de4aa121
commit e6e62e8813
3 changed files with 29 additions and 3 deletions

View File

@ -78,9 +78,12 @@ traverseDeclM decl = do
CommentDecl{} -> return decl'
traverseStmtM :: Stmt -> Scoper Type Stmt
traverseStmtM =
traverseStmtExprsM $ traverseNestedExprsM $
traverseExprTypesM traverseTypeM >=> traverseExprM
traverseStmtM = traverseStmtExprsM $ traverseNestedExprsM traverseStmtExprM
where
traverseStmtExprM :: Expr -> Scoper Type Expr
traverseStmtExprM =
traverseExprTypesM (traverseNestedTypesM traverseTypeM) >=>
traverseExprM
traverseTypeM :: Type -> Scoper Type Type
traverseTypeM (Alias st rs1) = do

View File

@ -0,0 +1,16 @@
package PKG;
typedef struct packed {
logic f;
} foo_t;
endpackage
module top;
typedef struct packed {
PKG::foo_t f;
} local_t;
local_t w;
initial begin
w <= local_t'(1'sb1);
$display("%b", w);
end
endmodule

View File

@ -0,0 +1,7 @@
module top;
reg w;
initial begin
w <= 1'b1;
$display("%b", w);
end
endmodule