From f2c2d73f36d7aaef90ded549143d1ee0c4d4a9f5 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Mon, 14 Jun 2021 15:32:01 -0400 Subject: sv: fix up end label checking - disallow [gen]blocks with an end label but not begin label - check validity of module end label - fix memory leak of package name and end label - fix memory leak of module end label --- tests/simple/matching_end_labels.sv | 29 +++++++++++++++++++++++++++++ tests/verilog/block_end_label_only.ys | 9 +++++++++ tests/verilog/block_end_label_wrong.ys | 9 +++++++++ tests/verilog/gen_block_end_label_only.ys | 9 +++++++++ tests/verilog/gen_block_end_label_wrong.ys | 9 +++++++++ tests/verilog/module_end_label.ys | 15 +++++++++++++++ 6 files changed, 80 insertions(+) create mode 100644 tests/simple/matching_end_labels.sv create mode 100644 tests/verilog/block_end_label_only.ys create mode 100644 tests/verilog/block_end_label_wrong.ys create mode 100644 tests/verilog/gen_block_end_label_only.ys create mode 100644 tests/verilog/gen_block_end_label_wrong.ys create mode 100644 tests/verilog/module_end_label.ys (limited to 'tests') diff --git a/tests/simple/matching_end_labels.sv b/tests/simple/matching_end_labels.sv new file mode 100644 index 000000000..09182ebcf --- /dev/null +++ b/tests/simple/matching_end_labels.sv @@ -0,0 +1,29 @@ +module top( + output reg [7:0] + out1, out2, out3, out4 +); + initial begin + begin : blk1 + reg x; + x = 1; + end + out1 = blk1.x; + begin : blk2 + reg x; + x = 2; + end : blk2 + out2 = blk2.x; + end + if (1) begin + if (1) begin : blk3 + reg x; + assign x = 3; + end + assign out3 = blk3.x; + if (1) begin : blk4 + reg x; + assign x = 4; + end : blk4 + assign out4 = blk4.x; + end +endmodule diff --git a/tests/verilog/block_end_label_only.ys b/tests/verilog/block_end_label_only.ys new file mode 100644 index 000000000..5db1c7879 --- /dev/null +++ b/tests/verilog/block_end_label_only.ys @@ -0,0 +1,9 @@ +logger -expect error "Begin label missing where end label \(incorrect_name\) was given\." 1 +read_verilog -sv <