Commit 799141af by Zachary Snow

enum conversion covers nested module items (resolves #70)

parent 463cdcb2
......@@ -83,8 +83,9 @@ convergeUsage items enums =
(usedEnums, unusedEnums) = partition isUsed enums
enumItems = map MIPackageItem $ map toItem usedEnums
isUsed ((_, x), _) = Set.member x usedIdents
usedIdents = execWriter $
mapM (collectExprsM $ collectNestedExprsM collectIdent) $ items
usedIdents = execWriter $ mapM collectModuleItemM items
collectModuleItemM = collectNestedModuleItemsM $ collectExprsM $
collectNestedExprsM collectIdent
collectIdent :: Expr -> Writer Idents ()
collectIdent (Ident x) = tell $ Set.singleton x
collectIdent _ = return ()
......
......@@ -35,6 +35,14 @@ typedef enum int {
I_1, I_2
} EnumI;
typedef enum int {
J_1, J_2, J_3
} EnumJ;
typedef enum int {
Z_1, Z_2, Z_3
} EnumZ;
`define PRINT(name, val) \
dummy``name = name``_``val; \
$display("%h %h %0d %0d", \
......@@ -94,4 +102,25 @@ module top;
`PRINT_UNSIZED(I, 2)
end
parameter USE_J = 1;
generate
if (USE_J) begin
EnumJ dummyJ;
initial begin
`PRINT(J, 1)
`PRINT(J, 2)
`PRINT(J, 3)
end
end
else begin
EnumZ dummyZ;
initial begin
`PRINT(Z, 1)
`PRINT(Z, 2)
`PRINT(Z, 3)
end
end
endgenerate
endmodule
......@@ -58,5 +58,26 @@ module top;
`PRINT_UNSIZED(I, 'b1)
end
parameter USE_J = 1;
generate
if (USE_J) begin
reg [31:0] dummyJ;
initial begin
`PRINT(J, 0)
`PRINT(J, 1)
`PRINT(J, 2)
end
end
else begin
reg [31:0] dummyZ;
initial begin
`PRINT(Z, 0)
`PRINT(Z, 1)
`PRINT(Z, 2)
end
end
endgenerate
endmodule
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment