THRIFT-554. multiple enums with the same key generate invalid code
authorBryan Duxbury <bryanduxbury@apache.org>
Thu, 5 Aug 2010 23:23:04 +0000 (23:23 +0000)
committerBryan Duxbury <bryanduxbury@apache.org>
Thu, 5 Aug 2010 23:23:04 +0000 (23:23 +0000)
This patch causes multiple enums with the same name to trigger a parser error.

Patch: Ben Taitelbaum

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@982825 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/parse/t_scope.h

index 585b910..91ec312 100644 (file)
@@ -60,7 +60,12 @@ class t_scope {
   }
 
   void add_constant(std::string name, t_const* constant) {
-    constants_[name] = constant;
+    if (constants_.find(name) != constants_.end()) {
+      throw "Enum " + name + " is already defined!";
+    } else {
+      constants_[name] = constant;
+    }
+                  
   }
 
   t_const* get_constant(std::string name) {