package name resolution visits enum base types

This commit is contained in:
Zachary Snow 2021-04-09 14:07:34 -04:00
parent dce7f14909
commit d0d897b4e4
3 changed files with 20 additions and 1 deletions

View File

@ -304,8 +304,9 @@ processItems topName packageName moduleItems = do
traverseTypeM (Alias x rs) =
resolveIdent x >>= \x' -> return $ Alias x' rs
traverseTypeM (Enum t enumItems rs) = do
t' <- traverseTypeM t
enumItems' <- mapM prefixEnumItem enumItems
return $ Enum t enumItems' rs
return $ Enum t' enumItems' rs
where prefixEnumItem (x, e) = prefixIdent x >>= \x' -> return (x', e)
traverseTypeM other = traverseSinglyNestedTypesM traverseTypeM other

View File

@ -0,0 +1,12 @@
package P;
localparam int W = 4;
typedef logic [W - 1:0] T;
typedef enum T {
A = 4'b1010,
B = 4'b0101
} E;
endpackage
module top;
initial $display("%d %d %d %b %b", $bits(P::A), $bits(P::T), $bits(P::E), P::A, P::B);
endmodule

View File

@ -0,0 +1,6 @@
module top;
localparam W = 4;
localparam A = 4'b1010;
localparam B = 4'b0101;
initial $display("%d %d %d %b %b", W, W, W, A, B);
endmodule