Skip to content

Commit 03632ea

Browse files
committed
Merge branch 'feature_enhance_thread_compiler_error' into develop
2 parents e6bfc57 + 9a6ff91 commit 03632ea

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

veriloggen/thread/compiler.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,42 @@ def _tmp_name(prefix='_tmp_thread'):
2828
return ret
2929

3030

31+
class CompileError(Exception):
32+
33+
def __init__(self, err, code, lineno, col_offset,
34+
end_lineno=None, end_col_offset=None):
35+
self.err = err
36+
self.code = code
37+
self.lineno = lineno
38+
self.col_offset = col_offset
39+
self.end_lineno = end_lineno
40+
self.end_col_offset = end_col_offset
41+
42+
def __str__(self):
43+
return '"{}" in "{}", line {}'.format(self.err, self.code, self.lineno)
44+
45+
3146
class FunctionVisitor(ast.NodeVisitor):
3247

3348
def __init__(self):
3449
self.functions = OrderedDict()
3550

51+
def visit(self, node):
52+
try:
53+
r = ast.NodeVisitor.visit(self, node)
54+
return r
55+
56+
except CompileError as e:
57+
raise
58+
59+
except Exception as e:
60+
if hasattr(ast, 'unparse'):
61+
code = ast.unparse(node)
62+
else:
63+
code = ast.dump(node)
64+
raise CompileError(e, code, node.lineno, node.col_offset,
65+
node.end_lineno, node.end_col_offset)
66+
3667
def getFunctions(self):
3768
return self.functions
3869

@@ -68,6 +99,23 @@ def __init__(self, m, name, clk, rst, fsm,
6899
for func in functions.values():
69100
self.scope.addFunction(func)
70101

102+
# -------------------------------------------------------------------------
103+
def visit(self, node):
104+
try:
105+
r = ast.NodeVisitor.visit(self, node)
106+
return r
107+
108+
except CompileError as e:
109+
raise
110+
111+
except Exception as e:
112+
if hasattr(ast, 'unparse'):
113+
code = ast.unparse(node)
114+
else:
115+
code = ast.dump(node)
116+
raise CompileError(e, code, node.lineno, node.col_offset,
117+
node.end_lineno, node.end_col_offset)
118+
71119
# -------------------------------------------------------------------------
72120
def visit_Import(self, node):
73121
raise TypeError("{} is not supported.".format(type(node)))

0 commit comments

Comments
 (0)