ruby: fix slicc compiler to complain about duplicate symbols
authorLena Olson <lena@cs.wisc.edu>
Tue, 18 Jun 2013 21:58:52 +0000 (16:58 -0500)
committerLena Olson <lena@cs.wisc.edu>
Tue, 18 Jun 2013 21:58:52 +0000 (16:58 -0500)
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>

src/mem/slicc/symbols/SymbolTable.py

index 43cfe87408ed62898e7102e3e029e8b64ab885c4..48a7ec8d24310a3c3849b64e20aeea0b9a7fa6d4 100644 (file)
@@ -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