THRIFT-413. Suppport for annotations on base types
authorDavid Reiss <dreiss@apache.org>
Mon, 27 Jul 2009 17:02:42 +0000 (17:02 +0000)
committerDavid Reiss <dreiss@apache.org>
Mon, 27 Jul 2009 17:02:42 +0000 (17:02 +0000)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@798219 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/thrifty.yy
test/AnnotationTest.thrift

index bf5408e..026e5c3 100644 (file)
@@ -154,6 +154,7 @@ int g_arglist = 0;
  */
 
 %type<ttype>     BaseType
+%type<ttype>     SimpleBaseType
 %type<ttype>     ContainerType
 %type<ttype>     SimpleContainerType
 %type<ttype>     MapType
@@ -976,7 +977,19 @@ FieldType:
       $$ = $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");
index dcc41b0..ef9ba13 100644 (file)
@@ -29,3 +29,6 @@ struct foo {
   python.type = "DenseFoo",
   java.final = "",
 )
+
+typedef string ( unicode.encoding = "UTF-16" ) non_latin_string
+typedef list< double ( cpp.fixed_point = "16" ) > tiny_float_list