diff --git a/src/Convert/SizeCast.hs b/src/Convert/SizeCast.hs index 98cd5c1..ec4cdc1 100644 --- a/src/Convert/SizeCast.hs +++ b/src/Convert/SizeCast.hs @@ -70,6 +70,12 @@ traverseExprM = _ -> convertCastM (Number s) (Number n) convertExprM (orig @ (Cast (Right DimsFn{}) _)) = return orig + convertExprM (Cast (Right (Ident x)) e) = do + typeMap <- get + -- can't convert this cast yet because x could be a typename + if Map.notMember x typeMap + then return $ Cast (Right $ Ident x) e + else convertCastM (Ident x) e convertExprM (Cast (Right s) e) = convertCastM s e convertExprM (Cast (Left (IntegerVector _ Signed rs)) e) = diff --git a/test/basic/typename_cast.sv b/test/basic/typename_cast.sv new file mode 100644 index 0000000..4156a60 --- /dev/null +++ b/test/basic/typename_cast.sv @@ -0,0 +1,6 @@ +module Example; + parameter type T = logic [3:0]; + T v = T'('1); + initial #1 $display("%b", v); +endmodule +module top; Example example(); endmodule diff --git a/test/basic/typename_cast.v b/test/basic/typename_cast.v new file mode 100644 index 0000000..b5c9505 --- /dev/null +++ b/test/basic/typename_cast.v @@ -0,0 +1,5 @@ +module Example; + wire [3:0] v = 4'b1111; + initial #1 $display("%b", v); +endmodule +module top; Example example(); endmodule