mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 18:58:51 +00:00
Fix enum value lookups in C++
The recent enum change was causing enums to break if used as constant values by the C++ generator. The problem was that we were searching for the fully-qualified constant name (enum_name.VALUE_NAME) in the enum values. This didn't affect Java because it just uses symbolic names in the generated code. Fix it by grabbing the base name before doing the search. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@996610 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8d7667c27f
commit
bdd6261b33
@ -71,10 +71,15 @@ class t_const_value {
|
||||
if (enum_ == NULL) {
|
||||
throw "have identifier \"" + get_identifier() + "\", but unset enum on line!";
|
||||
}
|
||||
t_enum_value* val = enum_->get_constant_by_name(get_identifier());
|
||||
std::string identifier = get_identifier();
|
||||
std::string::size_type dot = identifier.rfind('.');
|
||||
if (dot != std::string::npos) {
|
||||
identifier = identifier.substr(dot+1);
|
||||
}
|
||||
t_enum_value* val = enum_->get_constant_by_name(identifier);
|
||||
if (val == NULL) {
|
||||
throw
|
||||
"Unable to find enum value \"" + get_identifier() +
|
||||
"Unable to find enum value \"" + identifier +
|
||||
"\" in enum \"" + enum_->get_name() + "\"";
|
||||
}
|
||||
return val->get_value();
|
||||
|
Loading…
Reference in New Issue
Block a user