Commit 58e5bfa6 by Zachary Snow

fix typeof incorrectly propagating implicit types

parent 8eb3a251
...@@ -41,9 +41,10 @@ traverseDeclM decl = do ...@@ -41,9 +41,10 @@ traverseDeclM decl = do
item <- traverseModuleItemM (MIPackageItem $ Decl decl) item <- traverseModuleItemM (MIPackageItem $ Decl decl)
let MIPackageItem (Decl decl') = item let MIPackageItem (Decl decl') = item
case decl' of case decl' of
Variable Local UnknownType ident [] Nil -> do Variable Local (Implicit sg rs) ident [] Nil -> do
-- functions with no return type implicitly return a single bit -- implicit types, which are commonly found in function return
insertElem ident UnitType -- types, are recast as logics to avoid outputting bare ranges
insertElem ident $ IntegerVector TLogic sg rs
return decl' return decl'
Variable d t ident a e -> do Variable d t ident a e -> do
let t' = injectRanges t a let t' = injectRanges t a
......
module top;
typedef logic [1:0] T;
function automatic [1:0] flip;
input [1:0] inp;
flip = ~inp;
endfunction
initial begin
case (flip(2'b00)) inside
2'b11: $display("good");
default: $display("default");
endcase
case (T'(flip(2'b00))) inside
2'b11: $display("good");
default: $display("default");
endcase
end
endmodule
module top;
initial begin
$display("good");
$display("good");
end
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