From e6e62e8813748301ed6e11c69b245da9c285934e Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Sun, 19 Jul 2020 20:54:44 -0600 Subject: [PATCH] typedef conversion visits nested types in statements --- src/Convert/Typedef.hs | 9 ++++++--- test/basic/struct_nested_cast.sv | 16 ++++++++++++++++ test/basic/struct_nested_cast.v | 7 +++++++ 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 test/basic/struct_nested_cast.sv create mode 100644 test/basic/struct_nested_cast.v diff --git a/src/Convert/Typedef.hs b/src/Convert/Typedef.hs index 330e6af..f4b5c38 100644 --- a/src/Convert/Typedef.hs +++ b/src/Convert/Typedef.hs @@ -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 diff --git a/test/basic/struct_nested_cast.sv b/test/basic/struct_nested_cast.sv new file mode 100644 index 0000000..9279195 --- /dev/null +++ b/test/basic/struct_nested_cast.sv @@ -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 diff --git a/test/basic/struct_nested_cast.v b/test/basic/struct_nested_cast.v new file mode 100644 index 0000000..be33d38 --- /dev/null +++ b/test/basic/struct_nested_cast.v @@ -0,0 +1,7 @@ +module top; + reg w; + initial begin + w <= 1'b1; + $display("%b", w); + end +endmodule