Add regression test for calling void functions from class method

Check that it is possible to call a void function from a class method.
Check this for both functions defined in the global scope as well as
functions that are methods of the class or a base class.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
Lars-Peter Clausen 2022-10-08 15:59:42 +02:00
parent 85edd8bb18
commit 9107e298a3
3 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,46 @@
// Check that it is possible to call void function from within a class method.
// Check this for functions defined outside the class as well as functions that
// are methods of the class or base class.
integer sum = 0;
function void f1(integer x);
sum += x;
endfunction
class B;
function void f2(integer x);
sum += x;
endfunction
endclass
class C extends B;
function void f3(integer x);
sum += x;
endfunction
task t;
f1(10);
f2(20);
f3(30);
endtask
endclass
module test;
C c = new;
initial begin
c.t;
c.f2(40);
c.f3(50);
if (sum === 150) begin
$display("PASSED");
end else begin
$display("FAILED");
end
end
endmodule

View File

@ -529,6 +529,7 @@ sv_class_new_fail1 CE,-g2009 ivltests
sv_class_new_fail2 CE,-g2009 ivltests
sv_class_new_init normal,-g2009 ivltests
sv_class_in_module_decl normal,-g2009 ivltests
sv_class_method_call_void normal,-g2009 ivltests
sv_class_method_default1 normal,-g2009 ivltests
sv_class_method_default2 normal,-g2009 ivltests
sv_class_method_signed1 normal,-g2009 ivltests

View File

@ -409,6 +409,7 @@ sv_class_extends_scoped CE,-g2009 ivltests
sv_class_localparam CE,-g2009 ivltests
sv_class_new_init CE,-g2009 ivltests
sv_class_in_module_decl CE,-g2009 ivltests
sv_class_method_call_void CE,-g2009 ivltests
sv_class_method_default1 CE,-g2009 ivltests
sv_class_method_default2 CE,-g2009 ivltests
sv_class_method_signed1 CE,-g2009,-pallowsigned=1 ivltests