diff --git a/symbols/bound.py b/symbols/bound.py index 7cf55ddc3..7f6d32806 100644 --- a/symbols/bound.py +++ b/symbols/bound.py @@ -50,8 +50,15 @@ def make_node(lower, upper, lineno): if isinstance(lower, SymbolVAR): lower = lower.value + if lower is None: # semantic error + syntax_error(lineno, "Unknown lower bound for array dimension") + return + if isinstance(upper, SymbolVAR): upper = upper.value + if upper is None: # semantic error + syntax_error(lineno, "Unknown upper bound for array dimension") + return lower.value = int(lower.value) upper.value = int(upper.value) diff --git a/tests/functional/dim_const_crash.bas b/tests/functional/dim_const_crash.bas new file mode 100644 index 000000000..e0f27a17d --- /dev/null +++ b/tests/functional/dim_const_crash.bas @@ -0,0 +1,4 @@ + +const MAXMOBS as ubyte = MHEIGHT +dim mobCoords(0 to MAXMOBS, 0 to 1) as ubyte +