THRIFT-2499 Compiler: allow annotations without "= value"
Client: compiler general
Patch: Dave Watson
This closes #87
commit 078ce57e816eeb3697acf6f2c50e09526da73d3b
Author: Dave Watson <davejwatson@fb.com>
Date: 2014-03-21T19:42:31Z
[thrift] Compiler: allow annotations without "= value"
Summary: (foo) is the same as (foo = 1), for brevity
Test: AnnotationTest.thrift still compiles
diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy
index 62e13ba..da5c562 100644
--- a/compiler/cpp/src/thrifty.yy
+++ b/compiler/cpp/src/thrifty.yy
@@ -187,6 +187,7 @@
%type<ttype> TypeAnnotations
%type<ttype> TypeAnnotationList
%type<tannot> TypeAnnotation
+%type<id> TypeAnnotationValue
%type<tfield> Field
%type<tfieldid> FieldIdentifier
@@ -1273,12 +1274,24 @@
}
TypeAnnotation:
- tok_identifier '=' tok_literal CommaOrSemicolonOptional
+ tok_identifier TypeAnnotationValue CommaOrSemicolonOptional
{
- pdebug("TypeAnnotation -> tok_identifier = tok_literal");
+ pdebug("TypeAnnotation -> TypeAnnotationValue");
$$ = new t_annotation;
$$->key = $1;
- $$->val = $3;
+ $$->val = $2;
+ }
+
+TypeAnnotationValue:
+ '=' tok_literal
+ {
+ pdebug("TypeAnnotationValue -> = tok_literal");
+ $$ = $2;
+ }
+|
+ {
+ pdebug("TypeAnnotationValue ->");
+ $$ = strdup("1");
}
%%
diff --git a/test/AnnotationTest.thrift b/test/AnnotationTest.thrift
index dac476f..06bf571 100644
--- a/test/AnnotationTest.thrift
+++ b/test/AnnotationTest.thrift
@@ -28,6 +28,7 @@
cpp.type = "DenseFoo",
python.type = "DenseFoo",
java.final = "",
+ annotation.without.value,
)
exception foo_error {