From 3e5f9fd0447f77e2629f577f7f0bf30fc6a02df9 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Sat, 15 Jan 2022 18:00:40 +0100 Subject: [PATCH] Add a regression test with invalid struct member declarations The test checks that all invalid declarations produce an error and also do not crash the application. Signed-off-by: Lars-Peter Clausen --- ivtest/gold/struct_invalid_member.gold | 8 ++++++++ ivtest/ivltests/struct_invalid_member.v | 15 +++++++++++++++ ivtest/regress-sv.list | 1 + ivtest/regression_report-devel.txt | 3 ++- ivtest/regression_report-fsv.txt | 3 ++- ivtest/regression_report-strict.txt | 3 ++- ivtest/regression_report-vlog95.txt | 3 ++- 7 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 ivtest/gold/struct_invalid_member.gold create mode 100644 ivtest/ivltests/struct_invalid_member.v diff --git a/ivtest/gold/struct_invalid_member.gold b/ivtest/gold/struct_invalid_member.gold new file mode 100644 index 000000000..6fce735b8 --- /dev/null +++ b/ivtest/gold/struct_invalid_member.gold @@ -0,0 +1,8 @@ +./ivltests/struct_invalid_member.v:9: syntax error +./ivltests/struct_invalid_member.v:9: Error in struct/union member. +./ivltests/struct_invalid_member.v:10: syntax error +./ivltests/struct_invalid_member.v:10: Error in struct/union member. +./ivltests/struct_invalid_member.v:11: syntax error +./ivltests/struct_invalid_member.v:11: Error in struct/union member. +./ivltests/struct_invalid_member.v:12: syntax error +./ivltests/struct_invalid_member.v:12: Error in struct/union member. diff --git a/ivtest/ivltests/struct_invalid_member.v b/ivtest/ivltests/struct_invalid_member.v new file mode 100644 index 000000000..fc831f4d3 --- /dev/null +++ b/ivtest/ivltests/struct_invalid_member.v @@ -0,0 +1,15 @@ +// Check that structs with invalid member declarations are deteceted, report an +// error and do not cause a crash + +module test; + +struct packed { + logic x; // OK + logic y, z; // OK + logic bit; // Invalid + logic a b c; // Invalid + logc d; // Invalid + e; // Invalid +} s; + +endmodule diff --git a/ivtest/regress-sv.list b/ivtest/regress-sv.list index 7fd724239..763de3c0e 100644 --- a/ivtest/regress-sv.list +++ b/ivtest/regress-sv.list @@ -379,6 +379,7 @@ struct_packed_array normal,-g2009 ivltests struct_packed_array2 normal,-g2009 ivltests struct_packed_sysfunct normal,-g2009 ivltests struct_packed_write_read2 normal,-g2009 ivltests +struct_invalid_member CE,-g2009 ivltests gold=struct_invalid_member.gold sv-constants normal,-g2005-sv ivltests sv_array_assign_pattern2 normal,-g2009 ivltests sv_cast_integer normal,-g2005-sv ivltests diff --git a/ivtest/regression_report-devel.txt b/ivtest/regression_report-devel.txt index 84a661fd2..f4cd7746b 100644 --- a/ivtest/regression_report-devel.txt +++ b/ivtest/regression_report-devel.txt @@ -2154,6 +2154,7 @@ test_mos_strength_reduction: Passed. struct_packed_array2: Passed. struct_packed_sysfunct: Passed. struct_packed_write_read2: Passed. + struct_invalid_member: Passed - CE. sv-constants: Passed. sv_array_assign_pattern2: Passed. sv_cast_integer: Passed. @@ -2561,4 +2562,4 @@ test_mos_strength_reduction: Passed. ufuncsynth1: Passed. ============================================================================ Test results: - Total=2559, Passed=2553, Failed=3, Not Implemented=0, Expected Fail=3 + Total=2560, Passed=2554, Failed=3, Not Implemented=0, Expected Fail=3 diff --git a/ivtest/regression_report-fsv.txt b/ivtest/regression_report-fsv.txt index 48521a7c0..c91018241 100644 --- a/ivtest/regression_report-fsv.txt +++ b/ivtest/regression_report-fsv.txt @@ -2161,6 +2161,7 @@ test_mos_strength_reduction: Passed. struct_packed_array2: Passed. struct_packed_sysfunct: Passed. struct_packed_write_read2: Passed. + struct_invalid_member: Passed - CE. sv-constants: Passed. sv_array_assign_pattern2: Passed. sv_cast_integer: Passed. @@ -2561,4 +2562,4 @@ test_mos_strength_reduction: Passed. ufuncsynth1: Passed. ============================================================================ Test results: - Total=2559, Passed=2539, Failed=17, Not Implemented=3, Expected Fail=0 + Total=2560, Passed=2540, Failed=17, Not Implemented=3, Expected Fail=0 diff --git a/ivtest/regression_report-strict.txt b/ivtest/regression_report-strict.txt index 349f70de4..44bfa4d87 100644 --- a/ivtest/regression_report-strict.txt +++ b/ivtest/regression_report-strict.txt @@ -2150,6 +2150,7 @@ test_mos_strength_reduction: Passed. struct_packed_array2: Passed. struct_packed_sysfunct: Passed. struct_packed_write_read2: Passed. + struct_invalid_member: Passed - CE. sv-constants: Passed. sv_array_assign_pattern2: Passed. sv_cast_integer: Passed. @@ -2558,4 +2559,4 @@ test_mos_strength_reduction: Passed. ufuncsynth1: Passed. ============================================================================ Test results: - Total=2556, Passed=2550, Failed=3, Not Implemented=0, Expected Fail=3 + Total=2557, Passed=2551, Failed=3, Not Implemented=0, Expected Fail=3 diff --git a/ivtest/regression_report-vlog95.txt b/ivtest/regression_report-vlog95.txt index 1e13fe41e..783ba0429 100644 --- a/ivtest/regression_report-vlog95.txt +++ b/ivtest/regression_report-vlog95.txt @@ -2370,6 +2370,7 @@ test_mos_strength_reduction: Passed. struct9: Passed. struct_packed_sysfunct: Passed. struct_packed_write_read2: Passed. + struct_invalid_member: Passed - CE. sv-constants: Passed. sv_default_port_value1: Passed. sv_default_port_value2: Passed. @@ -2561,4 +2562,4 @@ test_mos_strength_reduction: Passed. synth_if_no_else: Passed. ============================================================================ Test results: - Total=2559, Passed=2520, Failed=2, Not Implemented=3, Expected Fail=34 + Total=2560, Passed=2521, Failed=2, Not Implemented=3, Expected Fail=34