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>
This commit is contained in:
parent
7c39d5df7e
commit
eb1279ff49
1 changed files with 5 additions and 0 deletions
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue