[
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.