handle anonymous unions to fix #1080

This commit is contained in:
Patrick Eibl 2019-11-21 14:10:34 -05:00
parent 0ac330bb81
commit 1e92e2d1de
1 changed files with 13 additions and 0 deletions

View File

@ -1935,6 +1935,19 @@ def parse_header(source):
line = source_text[i].replace("YOSYS_NAMESPACE_BEGIN", " namespace YOSYS_NAMESPACE{").replace("YOSYS_NAMESPACE_END"," }")
ugly_line = unpretty_string(line)
# for anonymous unions, ignore union enclosure by skipping start line and replacing end line with new line
if 'union {' in line:
j = i+1
while j < len(source_text):
union_line = source_text[j]
if '};' in union_line:
source_text[j] = '\n'
break
j += 1
if j != len(source_text):
i += 1
continue
if str.startswith(ugly_line, "namespace "):# and ugly_line.find("std") == -1 and ugly_line.find("__") == -1:
namespace_name = ugly_line[10:].replace("{","").strip()
namespaces.append((namespace_name, ugly_line.count("{")))