diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dcf156..4eccf09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * Fixed failure to resolve typenames suffixed with dimensions in contexts permitting both types and expressions, e.g., `$bits(T[W-1:0])` * Fixed errant constant folding of shadowed non-trivial localparams +* Fixed conversion of function calls with no arguments passed to other functions * Fixed certain non-ANSI style port declarations being incorrectly reported as incompatible diff --git a/src/Convert/EmptyArgs.hs b/src/Convert/EmptyArgs.hs index 4290e61..51d4e89 100644 --- a/src/Convert/EmptyArgs.hs +++ b/src/Convert/EmptyArgs.hs @@ -64,7 +64,8 @@ traverseStmt = traverseStmtExprsM traverseExpr traverseExpr :: Expr -> SC Expr traverseExpr (Call func (Args args [])) = do details <- lookupElemM $ Dot func dummyIdent - let args' = if details /= Nothing + args' <- mapM traverseExpr $ + if details /= Nothing then RawNum 0 : args else args return $ Call func (Args args' []) diff --git a/test/core/empty_args.sv b/test/core/empty_args.sv index 35bc3e1..32b0d33 100644 --- a/test/core/empty_args.sv +++ b/test/core/empty_args.sv @@ -3,4 +3,9 @@ module top; return 32'h00000013; endfunction initial $display(nop()); + function automatic integer flip; + input integer inp; + return ~inp; + endfunction + initial $display(flip(nop())); endmodule diff --git a/test/core/empty_args.v b/test/core/empty_args.v index b7a22e0..1adaec1 100644 --- a/test/core/empty_args.v +++ b/test/core/empty_args.v @@ -4,4 +4,9 @@ module top; nop = 32'h00000013; endfunction initial $display(nop(0)); + function automatic integer flip; + input integer inp; + flip = ~inp; + endfunction + initial $display(flip(nop(0))); endmodule