Skip to content

Commit f41cc5b

Browse files
akihikodakizachjs
andauthored
allow type declarations in tasks and functions (#321)
Co-authored-by: Zachary Snow <[email protected]>
1 parent c1ce7d0 commit f41cc5b

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

src/Language/SystemVerilog/Parser/Parse.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,6 +1226,7 @@ DeclsAndStmts :: { ([Decl], [Stmt]) }
12261226
DeclOrStmt :: { ([Decl], [Stmt]) }
12271227
: DeclTokens(";") { parseDTsAsDeclOrStmt $1 }
12281228
| ParameterDecl(";") { ($1, []) }
1229+
| Typedef { ([$1], []) }
12291230

12301231
ParameterDecl(delim) :: { [Decl] }
12311232
: ParameterDeclKW DeclAsgns delim { makeParamDecls $1 (Implicit Unspecified []) $2 }

test/core/tf_typedef.sv

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module top;
2+
task t;
3+
typedef byte u;
4+
$display("t %b", u'('1));
5+
endtask
6+
function integer f;
7+
input reg signed i;
8+
typedef shortint v;
9+
$display("i %b", v'(i));
10+
return $bits(v);
11+
endfunction
12+
initial begin
13+
t();
14+
$display("f %b", f(0));
15+
$display("f %b", f(1));
16+
end
17+
endmodule

test/core/tf_typedef.v

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module top;
2+
task t;
3+
$display("t %b", 8'hFF);
4+
endtask
5+
function integer f;
6+
input reg signed i;
7+
reg [15:0] j;
8+
begin
9+
j = i;
10+
$display("i %b", j);
11+
f = 16;
12+
end
13+
endfunction
14+
initial begin
15+
t;
16+
$display("f %b", f(0));
17+
$display("f %b", f(1));
18+
end
19+
endmodule

0 commit comments

Comments
 (0)