summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLena Olson <lena@cs.wisc.edu>2013-06-18 16:58:52 -0500
committerLena Olson <lena@cs.wisc.edu>2013-06-18 16:58:52 -0500
commiteb1279ff497c773d1dc04a8f81f011e8128b47be (patch)
treeb9b070bd61b1e4de4db618539fc3d367f3b8914e /src
parent7c39d5df7ea61a39ad1b9a3aa70d22f0e2943b21 (diff)
downloadgem5-eb1279ff497c773d1dc04a8f81f011e8128b47be.tar.xz
ruby: fix slicc compiler to complain about duplicate symbols
Previously, .sm files were allowed to use the same name for a type and a variable. This is unnecessarily confusing and has some bad side effects, like not being able to declare later variables in the same scope with the same type. This causes the compiler to complain and die on things like Address Address. Committed by: Nilay Vaish <nilay@cs.wisc.edu>
Diffstat (limited to 'src')
-rw-r--r--src/mem/slicc/symbols/SymbolTable.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mem/slicc/symbols/SymbolTable.py b/src/mem/slicc/symbols/SymbolTable.py
index 43cfe8740..48a7ec8d2 100644
--- a/src/mem/slicc/symbols/SymbolTable.py
+++ b/src/mem/slicc/symbols/SymbolTable.py
@@ -68,6 +68,11 @@ class SymbolTable(object):
if id in self.sym_map_vec[-1]:
sym.error("Symbol '%s' redeclared in same scope.", id)
+ for sym_map in self.sym_map_vec:
+ if id in sym_map:
+ if type(self.sym_map_vec[0][id]) != type(sym):
+ sym.error("Conflicting declaration of Symbol '%s'", id)
+
# FIXME - warn on masking of a declaration in a previous frame
self.sym_map_vec[-1][id] = sym