THRIFT-413. Suppport for annotations on base types
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@798219 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy
index bf5408e..026e5c3 100644
--- a/compiler/cpp/src/thrifty.yy
+++ b/compiler/cpp/src/thrifty.yy
@@ -154,6 +154,7 @@
*/
%type<ttype> BaseType
+%type<ttype> SimpleBaseType
%type<ttype> ContainerType
%type<ttype> SimpleContainerType
%type<ttype> MapType
@@ -976,7 +977,19 @@
$$ = $1;
}
-BaseType:
+BaseType: SimpleBaseType TypeAnnotations
+ {
+ pdebug("BaseType -> SimpleBaseType TypeAnnotations");
+ if ($2 != NULL) {
+ $$ = new t_base_type(*static_cast<t_base_type*>($1));
+ $$->annotations_ = $2->annotations_;
+ delete $2;
+ } else {
+ $$ = $1;
+ }
+ }
+
+SimpleBaseType:
tok_string
{
pdebug("BaseType -> tok_string");
diff --git a/test/AnnotationTest.thrift b/test/AnnotationTest.thrift
index dcc41b0..ef9ba13 100644
--- a/test/AnnotationTest.thrift
+++ b/test/AnnotationTest.thrift
@@ -29,3 +29,6 @@
python.type = "DenseFoo",
java.final = "",
)
+
+typedef string ( unicode.encoding = "UTF-16" ) non_latin_string
+typedef list< double ( cpp.fixed_point = "16" ) > tiny_float_list