Skip to content

Commit cb4eb92

Browse files
authored
Merge pull request #1507 from JHertz5/issue-1391
Issue#1391: Added blank line rules for case generates
2 parents a0b8ac4 + 1769e08 commit cb4eb92

20 files changed

+494
-0
lines changed

docs/case_generate_alternative_rules.rst

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,61 @@ This rule checks for a single space before the **=>** operator.
5353
5454
when 3 =>
5555
56+
case_generate_alternative_200
57+
#############################
58+
59+
|phase_3| |error| |blank_line|
60+
61+
This rule checks for a blank line below the **=>** keyword.
62+
63+
|configuring_blank_lines_link|
64+
65+
**Violation**
66+
67+
.. code-block:: vhdl
68+
69+
when 0 =>
70+
a <= b;
71+
72+
**Fix**
73+
74+
.. code-block:: vhdl
75+
76+
when 0 =>
77+
78+
a <= b;
79+
80+
case_generate_alternative_201
81+
#############################
82+
83+
|phase_3| |error| |blank_line|
84+
85+
This rule checks for blank lines or comments above the **when** keyword.
86+
87+
|configuring_previous_line_rules_link|
88+
89+
The default style is :code:`allow_comment`.
90+
91+
**Violation**
92+
93+
.. code-block:: vhdl
94+
95+
case data is
96+
when 3 =>
97+
-- Comment
98+
when 4 =>
99+
100+
**Fix**
101+
102+
.. code-block:: vhdl
103+
104+
case data is
105+
106+
when 3 =>
107+
108+
-- Comment
109+
when 4 =>
110+
56111
case_generate_alternative_300
57112
#############################
58113

docs/case_generate_statement_rules.rst

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,32 @@ This rule checks for a single space before the **generate** keyword.
4646
4747
case data generate
4848
49+
case_generate_statement_200
50+
###########################
51+
52+
|phase_3| |error| |blank_line|
53+
54+
This rule checks for blank lines or comments above the **end** keyword.
55+
56+
|configuring_blank_lines_link|
57+
58+
**Violation**
59+
60+
.. code-block:: vhdl
61+
62+
when others =>
63+
null;
64+
end generate;
65+
66+
**Fix**
67+
68+
.. code-block:: vhdl
69+
70+
when others =>
71+
null;
72+
73+
end generate;
74+
4975
case_generate_statement_400
5076
###########################
5177

docs/configuring_blank_lines.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ Rules Enforcing Blank Lines
146146
* `case_009 <case_rules.html#case-009>`_
147147
* `case_010 <case_rules.html#case-010>`_
148148
* `case_200 <case_rules.html#case-200>`_
149+
* `case_generate_alternative_200 <case_generate_alternative_rules.html#case-generate-alternative-200>`_
150+
* `case_generate_statement_200 <case_generate_statement_rules.html#case-generate-statement-200>`_
149151
* `component_016 <component_rules.html#component-016>`_
150152
* `component_018 <component_rules.html#component-018>`_
151153
* `constant_200 <constant_rules.html#constant-200>`_

docs/configuring_previous_line_rules.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ Rules Enforcing Previous Lines
241241
* `block_200 <block_rules.html#block-200>`_
242242
* `case_007 <case_rules.html#case-007>`_
243243
* `case_201 <case_rules.html#case-201>`_
244+
* `case_generate_alternative_201 <case_generate_alternative_rules.html#case-generate-alternative-201>`_
244245
* `component_003 <component_rules.html#component-003>`_
245246
* `context_003 <context_rules.html#context-003>`_
246247
* `entity_003 <entity_rules.html#entity-003>`_

docs/rule_groups/blank_line_rule_group.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ Rules Enforcing Blank Line Rule Group
2222
* `case_010 <../case_rules.html#case-010>`_
2323
* `case_200 <../case_rules.html#case-200>`_
2424
* `case_201 <../case_rules.html#case-201>`_
25+
* `case_generate_alternative_200 <../case_generate_alternative_rules.html#case-generate-alternative-200>`_
26+
* `case_generate_alternative_201 <../case_generate_alternative_rules.html#case-generate-alternative-201>`_
27+
* `case_generate_statement_200 <../case_generate_statement_rules.html#case-generate-statement-200>`_
2528
* `component_003 <../component_rules.html#component-003>`_
2629
* `component_016 <../component_rules.html#component-016>`_
2730
* `component_018 <../component_rules.html#component-018>`_
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
architecture ARCH of ENTITY is
3+
4+
begin
5+
6+
gen_label : case boolean_1 generate
7+
8+
when STATE_1 =>
9+
10+
a <= b;
11+
b <= c;
12+
c <= d;
13+
14+
end generate;
15+
16+
gen_label : case boolean_1 generate
17+
18+
when STATE_1 =>
19+
20+
a <= b;
21+
b <= c;
22+
c <= d;
23+
24+
end generate;
25+
26+
end architecture ARCH;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
architecture ARCH of ENTITY is
3+
4+
begin
5+
6+
gen_label : case boolean_1 generate
7+
8+
when STATE_1 =>
9+
10+
a <= b;
11+
b <= c;
12+
c <= d;
13+
14+
end generate;
15+
16+
gen_label : case boolean_1 generate
17+
18+
when STATE_1 =>
19+
a <= b;
20+
b <= c;
21+
c <= d;
22+
23+
end generate;
24+
25+
end architecture ARCH;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
architecture ARCH of ENTITY is
3+
4+
begin
5+
6+
gen_label : case boolean_1 generate
7+
8+
when STATE_1 =>
9+
10+
-- Comment
11+
when STATE_2 =>
12+
13+
end generate;
14+
15+
-- Violations below
16+
17+
gen_label : case boolean_1 generate
18+
19+
when STATE_1 =>
20+
21+
-- Comment
22+
when STATE_2 =>
23+
24+
end generate;
25+
26+
gen_label : case boolean_2 generate
27+
28+
-- Comment
29+
when STATE_1 =>
30+
end generate;
31+
32+
end architecture ARCH;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
architecture ARCH of ENTITY is
3+
4+
begin
5+
6+
gen_label : case boolean_1 generate
7+
8+
when STATE_1 =>
9+
10+
-- Comment
11+
when STATE_2 =>
12+
13+
end generate;
14+
15+
-- Violations below
16+
17+
gen_label : case boolean_1 generate
18+
when STATE_1 =>
19+
-- Comment
20+
when STATE_2 =>
21+
22+
end generate;
23+
24+
gen_label : case boolean_2 generate
25+
-- Comment
26+
when STATE_1 =>
27+
end generate;
28+
29+
end architecture ARCH;
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import os
4+
import unittest
5+
6+
from tests import utils
7+
from vsg import vhdlFile
8+
from vsg.rules import case_generate_alternative
9+
10+
sTestDir = os.path.dirname(__file__)
11+
12+
lFile, eError = vhdlFile.utils.read_vhdlfile(os.path.join(sTestDir, "rule_200_test_input.vhd"))
13+
14+
lExpected = []
15+
lExpected.append("")
16+
utils.read_file(os.path.join(sTestDir, "rule_200_test_input.fixed.vhd"), lExpected)
17+
18+
19+
class test_rule(unittest.TestCase):
20+
def setUp(self):
21+
self.oFile = vhdlFile.vhdlFile(lFile)
22+
self.assertIsNone(eError)
23+
24+
def test_rule_200(self):
25+
oRule = case_generate_alternative.rule_200()
26+
self.assertTrue(oRule)
27+
self.assertEqual(oRule.name, "case_generate_alternative")
28+
self.assertEqual(oRule.identifier, "200")
29+
30+
lExpected = [18]
31+
32+
oRule.analyze(self.oFile)
33+
self.assertEqual(lExpected, utils.extract_violation_lines_from_violation_object(oRule.violations))
34+
35+
def test_fix_rule_200(self):
36+
oRule = case_generate_alternative.rule_200()
37+
38+
oRule.fix(self.oFile)
39+
40+
lActual = self.oFile.get_lines()
41+
42+
self.assertEqual(lExpected, lActual)
43+
44+
oRule.analyze(self.oFile)
45+
self.assertEqual(oRule.violations, [])

0 commit comments

Comments
 (0)