From 85faa46fb3b934b2c07eee6ec275ee90fb7171a0 Mon Sep 17 00:00:00 2001 From: iceboy Date: Thu, 3 May 2018 11:59:30 -0700 Subject: [PATCH] Fix union escaping order. (#4722) * Fix union escaping order. Fixes #4712 * style --- src/idl_gen_cpp.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index 75c86c0..36a6249 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -1638,7 +1638,9 @@ class CppGenerator : public BaseGenerator { auto full_struct_name = GetUnionElement(ev, true, true); // @TODO: Mby make this decisions more universal? How? - code_.SetValue("U_GET_TYPE", Name(field) + UnionTypeFieldSuffix()); + code_.SetValue( + "U_GET_TYPE", + EscapeKeyword(field.name + UnionTypeFieldSuffix())); code_.SetValue( "U_ELEMENT_TYPE", WrapInNameSpace(u->defined_namespace, GetEnumValUse(*u, ev))); @@ -1994,8 +1996,9 @@ class CppGenerator : public BaseGenerator { std::string GenUnionUnpackVal(const FieldDef &afield, const char *vec_elem_access, const char *vec_type_access) { - return afield.value.type.enum_def->name + "Union::UnPack(" + "_e" + - vec_elem_access + ", " + Name(afield) + UnionTypeFieldSuffix() + + return afield.value.type.enum_def->name + + "Union::UnPack(" + "_e" + vec_elem_access + ", " + + EscapeKeyword(afield.name + UnionTypeFieldSuffix()) + "()" + vec_type_access + ", _resolver)"; } -- 2.7.4