Add regression test for enums declared in structs and classes
These tests check that a enum that is declared in a struct or class are correctly elaborated and also name collisions with the enum names are detected. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
9e6f651e09
commit
d856a35e4d
|
|
@ -0,0 +1,52 @@
|
|||
// Check that when a enum type is declared inside a class that the enum is
|
||||
// properly installed in the scope and the enum items are available.
|
||||
//
|
||||
// Also check that when using a typedef of a enum inside a class that the enum
|
||||
// is not elaborated inside the class and it is possible to have a enum with the
|
||||
// same names inside the class scope.
|
||||
|
||||
module test;
|
||||
|
||||
typedef enum integer {
|
||||
A = 1
|
||||
} e1_t;
|
||||
|
||||
class C;
|
||||
typedef enum integer {
|
||||
A = 10
|
||||
} e2_t;
|
||||
e1_t e1;
|
||||
e2_t e2;
|
||||
|
||||
function new();
|
||||
e1 = test.A;
|
||||
e2 = A;
|
||||
endfunction
|
||||
|
||||
function void set(e2_t new_e2);
|
||||
e2 = new_e2;
|
||||
endfunction
|
||||
|
||||
endclass
|
||||
|
||||
C c;
|
||||
|
||||
initial begin
|
||||
c = new;
|
||||
c.e1 = A;
|
||||
c.set(c.e2);
|
||||
|
||||
// Not yet supported
|
||||
// c.e2 = C::A;
|
||||
// c.e2 = c.A;
|
||||
|
||||
// Check that they have the numerical value from the right scope
|
||||
if (c.e1 == 1 && c.e2 == 10) begin
|
||||
$display("PASSED");
|
||||
end else begin
|
||||
$display("FAILED");
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
// Check that the enum names are added to the lexor scope of the class and
|
||||
// name collisions with other symbols are reported as errors.
|
||||
|
||||
module test;
|
||||
|
||||
class C;
|
||||
enum {
|
||||
A = 10
|
||||
} e;
|
||||
typedef int A;
|
||||
endclass
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
// Check that when a enum type is declared inside a struct that the enum is
|
||||
// properly installed in the scope and the enum items are available
|
||||
|
||||
module test;
|
||||
|
||||
struct packed {
|
||||
enum integer {
|
||||
A
|
||||
} e;
|
||||
} s;
|
||||
|
||||
initial begin
|
||||
s.e = A;
|
||||
if (s.e == A) begin
|
||||
$display("PASSED");
|
||||
end else begin
|
||||
$display("FAILED");
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
@ -231,6 +231,9 @@ edge normal,-g2009 ivltests
|
|||
enum_base_range normal,-g2005-sv ivltests
|
||||
enum_elem_ranges normal,-g2005-sv ivltests
|
||||
enum_dims_invalid CE,-g2005-sv ivltests
|
||||
enum_in_struct normal,-g2005-sv ivltests
|
||||
enum_in_class normal,-g2005-sv ivltests
|
||||
enum_in_class_name_coll CE,-g2005-sv ivltests
|
||||
enum_next normal,-g2005-sv ivltests
|
||||
enum_ports normal,-g2005-sv ivltests
|
||||
enum_test1 normal,-g2005-sv ivltests
|
||||
|
|
|
|||
|
|
@ -336,6 +336,8 @@ br_gh391 CE,-g2009 ivltests
|
|||
br_gh437 CE,-g2009 ivltests
|
||||
br_gh445 CE,-g2009 ivltests
|
||||
br_gh461 CE,-g2009 ivltests
|
||||
enum_in_class CE,-g2005-sv ivltests
|
||||
enum_in_class_name_coll CE,-g2005-sv ivltests
|
||||
sv_class1 CE,-g2009 ivltests
|
||||
sv_class2 CE,-g2009 ivltests
|
||||
sv_class3 CE,-g2009 ivltests
|
||||
|
|
|
|||
|
|
@ -2006,6 +2006,9 @@ test_mos_strength_reduction: Passed.
|
|||
enum_base_range: Passed.
|
||||
enum_elem_ranges: Passed.
|
||||
enum_dims_invalid: Passed - CE.
|
||||
enum_in_struct: Passed.
|
||||
enum_in_class: Passed.
|
||||
enum_in_class_name_coll: Passed - CE.
|
||||
enum_next: Passed.
|
||||
enum_ports: Passed.
|
||||
enum_test1: Passed.
|
||||
|
|
@ -2562,4 +2565,4 @@ test_mos_strength_reduction: Passed.
|
|||
ufuncsynth1: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2560, Passed=2554, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
Total=2563, Passed=2557, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
|
|
|
|||
|
|
@ -2013,6 +2013,9 @@ test_mos_strength_reduction: Passed.
|
|||
enum_base_range: Passed.
|
||||
enum_elem_ranges: Passed.
|
||||
enum_dims_invalid: Passed - CE.
|
||||
enum_in_struct: Passed.
|
||||
enum_in_class: Passed.
|
||||
enum_in_class_name_coll: Passed - CE.
|
||||
enum_next: Passed.
|
||||
enum_ports: Passed.
|
||||
enum_test1: Passed.
|
||||
|
|
@ -2562,4 +2565,4 @@ test_mos_strength_reduction: Passed.
|
|||
ufuncsynth1: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2560, Passed=2540, Failed=17, Not Implemented=3, Expected Fail=0
|
||||
Total=2563, Passed=2543, Failed=17, Not Implemented=3, Expected Fail=0
|
||||
|
|
|
|||
|
|
@ -2002,6 +2002,9 @@ test_mos_strength_reduction: Passed.
|
|||
enum_base_range: Passed.
|
||||
enum_elem_ranges: Passed.
|
||||
enum_dims_invalid: Passed - CE.
|
||||
enum_in_struct: Passed.
|
||||
enum_in_class: Passed.
|
||||
enum_in_class_name_coll: Passed - CE.
|
||||
enum_next: Passed.
|
||||
enum_ports: Passed.
|
||||
enum_test1: Passed.
|
||||
|
|
@ -2559,4 +2562,4 @@ test_mos_strength_reduction: Passed.
|
|||
ufuncsynth1: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2557, Passed=2551, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
Total=2560, Passed=2554, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
|
|
|
|||
|
|
@ -248,6 +248,8 @@ Running vlog95 compiler/VVP tests for Icarus Verilog version: 12.
|
|||
br_gh437: Passed - CE.
|
||||
br_gh445: Passed - CE.
|
||||
br_gh461: Passed - CE.
|
||||
enum_in_class: Passed - CE.
|
||||
enum_in_class_name_coll: Passed - CE.
|
||||
sv_class1: Passed - CE.
|
||||
sv_class2: Passed - CE.
|
||||
sv_class3: Passed - CE.
|
||||
|
|
@ -2309,6 +2311,7 @@ test_mos_strength_reduction: Passed.
|
|||
edge: Passed.
|
||||
enum_base_range: Passed.
|
||||
enum_dims_invalid: Passed - CE.
|
||||
enum_in_struct: Passed.
|
||||
enum_test2: Passed.
|
||||
enum_test3: Passed - CE.
|
||||
enum_test4: Passed.
|
||||
|
|
@ -2562,4 +2565,4 @@ test_mos_strength_reduction: Passed.
|
|||
synth_if_no_else: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2560, Passed=2521, Failed=2, Not Implemented=3, Expected Fail=34
|
||||
Total=2563, Passed=2524, Failed=2, Not Implemented=3, Expected Fail=34
|
||||
|
|
|
|||
Loading…
Reference in New Issue