Skip to content

Commit a0b8ac4

Browse files
authored
Merge pull request #1499 from JHertz5/issue-1488
Issue#1488: New rule to handle whitespace before array constraints and index constraints
2 parents f621642 + 4dfbf9a commit a0b8ac4

24 files changed

+328
-212
lines changed

docs/array_constraint_rules.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,27 @@
33
Array Constraint Rules
44
----------------------
55

6+
array_constraint_100
7+
####################
8+
9+
|phase_2| |error| |whitespace|
10+
11+
This rule checks for whitespace before the opening parenthesis.
12+
13+
|configuring_whitespace_rules_link|
14+
15+
**Violation**
16+
17+
.. code-block:: vhdl
18+
19+
subtype my_array3 is my_array2 (open)(7 downto 0);
20+
21+
**Fix**
22+
23+
.. code-block:: vhdl
24+
25+
subtype my_array3 is my_array2(open)(7 downto 0);
26+
627
array_constraint_500
728
####################
829

docs/configuring_whitespace_rules.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ Rules Enforcing Whitespace
122122
* `architecture_031 <architecture_rules.html#architecture-031>`_
123123
* `architecture_032 <architecture_rules.html#architecture-032>`_
124124
* `architecture_033 <architecture_rules.html#architecture-033>`_
125+
* `array_constraint_100 <array_constraint_rules.html#array-constraint-100>`_
125126
* `assert_100 <assert_rules.html#assert-100>`_
126127
* `assert_101 <assert_rules.html#assert-101>`_
127128
* `assert_102 <assert_rules.html#assert-102>`_
@@ -212,6 +213,7 @@ Rules Enforcing Whitespace
212213
* `if_004 <if_rules.html#if-004>`_
213214
* `if_005 <if_rules.html#if-005>`_
214215
* `if_015 <if_rules.html#if-015>`_
216+
* `index_constraint_100 <index_constraint_rules.html#index-constraint-100>`_
215217
* `index_subtype_definition_100 <index_subtype_definition_rules.html#index-subtype-definition-100>`_
216218
* `index_subtype_definition_101 <index_subtype_definition_rules.html#index-subtype-definition-101>`_
217219
* `instantiation_002 <instantiation_rules.html#instantiation-002>`_

docs/index_constraint_rules.rst

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
.. include:: includes.rst
2+
3+
Index Constraint Rules
4+
----------------------
5+
6+
index_constraint_100
7+
####################
8+
9+
|phase_2| |error| |whitespace|
10+
11+
This rule checks for whitespace before the opening parenthesis.
12+
13+
|configuring_whitespace_rules_link|
14+
15+
**Violation**
16+
17+
.. code-block:: vhdl
18+
19+
subtype my_array3 is my_array2(open) (7 downto 0);
20+
21+
**Fix**
22+
23+
.. code-block:: vhdl
24+
25+
subtype my_array3 is my_array2(open)(7 downto 0);

docs/rule_groups/whitespace_rule_group.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Rules Enforcing Whitespace Rule Group
1515
* `architecture_031 <../architecture_rules.html#architecture-031>`_
1616
* `architecture_032 <../architecture_rules.html#architecture-032>`_
1717
* `architecture_033 <../architecture_rules.html#architecture-033>`_
18+
* `array_constraint_100 <../array_constraint_rules.html#array-constraint-100>`_
1819
* `assert_100 <../assert_rules.html#assert-100>`_
1920
* `assert_101 <../assert_rules.html#assert-101>`_
2021
* `assert_102 <../assert_rules.html#assert-102>`_
@@ -106,6 +107,7 @@ Rules Enforcing Whitespace Rule Group
106107
* `if_004 <../if_rules.html#if-004>`_
107108
* `if_005 <../if_rules.html#if-005>`_
108109
* `if_015 <../if_rules.html#if-015>`_
110+
* `index_constraint_100 <../index_constraint_rules.html#index-constraint-100>`_
109111
* `index_subtype_definition_100 <../index_subtype_definition_rules.html#index-subtype-definition-100>`_
110112
* `index_subtype_definition_101 <../index_subtype_definition_rules.html#index-subtype-definition-101>`_
111113
* `instantiation_002 <../instantiation_rules.html#instantiation-002>`_
@@ -195,7 +197,6 @@ Rules Enforcing Whitespace Rule Group
195197
* `whitespace_005 <../whitespace_rules.html#whitespace-005>`_
196198
* `whitespace_006 <../whitespace_rules.html#whitespace-006>`_
197199
* `whitespace_007 <../whitespace_rules.html#whitespace-007>`_
198-
* `whitespace_008 <../whitespace_rules.html#whitespace-008>`_
199200
* `whitespace_010 <../whitespace_rules.html#whitespace-010>`_
200201
* `whitespace_011 <../whitespace_rules.html#whitespace-011>`_
201202
* `whitespace_013 <../whitespace_rules.html#whitespace-013>`_

docs/whitespace_rules.rst

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -157,23 +157,7 @@ This rule checks for spaces after a comma.
157157
whitespace_008
158158
##############
159159

160-
|phase_2| |error| |whitespace|
161-
162-
This rule checks for spaces after the **std_logic_vector** keyword.
163-
164-
**Violation**
165-
166-
.. code-block:: vhdl
167-
168-
signal data : std_logic_vector (7 downto 0);
169-
signal counter : std_logic_vector (7 downto 0);
170-
171-
**Fix**
172-
173-
.. code-block:: vhdl
174-
175-
signal data : std_logic_vector(7 downto 0);
176-
signal counter : std_logic_vector(7 downto 0);
160+
This rule has been deprecated and replaced with rule `index_constraint_100 <index_constraint_rules.html#index_constraint-100>`_.
177161

178162
whitespace_010
179163
##############
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
architecture rtl of fifo is
3+
4+
subtype t_my_array is t_array(open)(t_range);
5+
subtype t_my_array is t_array(open)(t_range);
6+
subtype t_my_array is t_array(open)(t_range);
7+
8+
begin
9+
10+
end architecture rtl;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
architecture rtl of fifo is
3+
4+
subtype t_my_array is t_array (open)(t_range);
5+
subtype t_my_array is t_array (open)(t_range);
6+
subtype t_my_array is t_array(open)(t_range);
7+
8+
begin
9+
10+
end architecture rtl;
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 array_constraint
9+
10+
sTestDir = os.path.dirname(__file__)
11+
12+
lFile, eError = vhdlFile.utils.read_vhdlfile(os.path.join(sTestDir, "rule_100_test_input.vhd"))
13+
14+
lExpected = []
15+
lExpected.append("")
16+
utils.read_file(os.path.join(sTestDir, "rule_100_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_100(self):
25+
oRule = array_constraint.rule_100()
26+
self.assertTrue(oRule)
27+
self.assertEqual(oRule.name, "array_constraint")
28+
self.assertEqual(oRule.identifier, "100")
29+
30+
lExpected = [4, 5]
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_100(self):
36+
oRule = array_constraint.rule_100()
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, [])

tests/index_constraint/__init__.py

Whitespace-only changes.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
entity fifo is
3+
port (
4+
i_data : in signed(15 downto 0);
5+
i_data : in signed(15 downto 0);
6+
i_data : in signed(15 downto 0)
7+
);
8+
end entity fifo;
9+
10+
11+
architecture rtl of fifo is
12+
13+
subtype t_my_array is t_array(open)(t_range);
14+
subtype t_my_array is t_array(open)(t_range);
15+
subtype t_my_array is t_array(open)(t_range);
16+
17+
begin
18+
19+
end architecture rtl;

0 commit comments

Comments
 (0)