Skip to content

Commit bac58c5

Browse files
committed
Issue #85. Ignoring type generics
1 parent 83fc346 commit bac58c5

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

vunit/test/unit/test_vhdl_parser.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,21 @@ def test_parsing_entity_with_package_generic(self):
5353
self.assertEqual(entity.generics[0].identifier, 'package_g')
5454
self.assertEqual(entity.generics[0].subtype_indication.type_mark, 'integer')
5555

56+
def test_parsing_entity_with_type_generic(self):
57+
entity = self.parse_single_entity("""\
58+
entity ent is
59+
generic (
60+
type t;
61+
type_g : integer
62+
);
63+
end entity;
64+
""")
65+
self.assertEqual(entity.identifier, "ent")
66+
self.assertEqual(entity.ports, [])
67+
self.assertEqual(len(entity.generics), 1)
68+
self.assertEqual(entity.generics[0].identifier, 'type_g')
69+
self.assertEqual(entity.generics[0].subtype_indication.type_mark, 'integer')
70+
5671
def test_getting_entities_from_design_file(self):
5772
design_file = VHDLDesignFile.parse("""
5873
entity entity1 is

vunit/vhdl_parser.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ def _find_port_clause(cls, code):
397397
return []
398398

399399
_package_generic_re = re.compile(r"\s*package\s+", re.MULTILINE | re.IGNORECASE)
400+
_type_generic_re = re.compile(r"\s*type\s+", re.MULTILINE | re.IGNORECASE)
400401

401402
@classmethod
402403
def _parse_generic_clause(cls, code):
@@ -413,10 +414,14 @@ def _parse_generic_clause(cls, code):
413414
# Add interface elements to the generic list
414415
for interface_element in interface_elements:
415416

416-
if cls._package_generic_re.match(interface_element.strip()) is not None:
417+
if cls._package_generic_re.match(interface_element) is not None:
417418
# Ignore package generics
418419
continue
419420

421+
if cls._type_generic_re.match(interface_element) is not None:
422+
# Ignore type generics
423+
continue
424+
420425
generic_list.append(VHDLInterfaceElement.parse(interface_element))
421426

422427
return generic_list

0 commit comments

Comments
 (0)