[ 
https://issues.apache.org/jira/browse/THRIFT-895?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908052#action_12908052
 ] 

Bruce Lowekamp commented on THRIFT-895:
---------------------------------------

in C++ enum keys are scoped at the same level as the enum.  so, yes

enum Foo { A=1, B=2 }

enum Bar { A=1, B=2 }

is not legal in C++. 

To get something like that, you could wrap them in an enclosing class:

class Foo {
public: enum {A=1,B=2};
};

class Bar {
public: enum {A=1, B=2};
};

now you have to reference them explicitly as Foo::A and Bar::A

which would require any C++ code that used enums to be updated to refer to 
classnames, but I think that's the best way to support enums in the same scope 
having the same keys.

> Thrift compiler does not allow two different enumerations to have the same 
> key name for one of the enum values
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-895
>                 URL: https://issues.apache.org/jira/browse/THRIFT-895
>             Project: Thrift
>          Issue Type: Bug
>          Components: Compiler (General)
>    Affects Versions: 0.4
>            Reporter: Tony Kinnis
>            Assignee: Bryan Duxbury
>            Priority: Critical
>             Fix For: 0.5
>
>         Attachments: test.thrift
>
>
> As of version 0.4.0 the Thrift compiler no longer allows two different enums 
> to have a key with the same name. It seems that this change was introduced by 
> the patch for THRIFT-544. Particularly the patch labeled: 
> thrift-544_prevent_redefining_consts.patch.
> The problem with this patch is that it now blocks this seemingly valid 
> definition.
> enum Foo {
>     A=1,
>     B=2
> }
> enum Bar {
>     A=1,
>     B=2
> }
> If I then run the thrift compiler as follows....
> thrift --gen java test.thrift 
> It will tell me that: test.thrift:7] Enum A is already defined!
> However, this should be valid and has worked in previous versions of Thrift. 
> I believe this patch (thrift-544_prevent_redefining_consts.patch) should be 
> rolled back.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to