Detect redefinition of functions and variables.

TRAC #21840
Signed-off-by: Jamie Madill
Signed-off-by: Shannon Woods
Author: Nicolas Capens
diff --git a/src/compiler/SymbolTable.h b/src/compiler/SymbolTable.h
index e0efe37..d7ae4fc 100644
--- a/src/compiler/SymbolTable.h
+++ b/src/compiler/SymbolTable.h
@@ -197,7 +197,7 @@
     TSymbolTableLevel() { }
     ~TSymbolTableLevel();
 
-    bool insert(TSymbol &symbol) 
+    bool insert(const TString &name, TSymbol &symbol)
     {
         symbol.setUniqueId(++uniqueId);
 
@@ -205,11 +205,16 @@
         // returning true means symbol was added to the table
         //
         tInsertResult result;
-        result = level.insert(tLevelPair(symbol.getMangledName(), &symbol));
+        result = level.insert(tLevelPair(name, &symbol));
 
         return result.second;
     }
 
+    bool insert(TSymbol &symbol)
+    {
+        return insert(symbol.getMangledName(), symbol);
+    }
+
     TSymbol* find(const TString& name) const
     {
         tLevel::const_iterator it = level.find(name);