From: Jens Geyer Date: Fri, 2 May 2014 21:50:04 +0000 (+0200) Subject: THRIFT-2499 Compiler: allow annotations without "= value" X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=89847dfaa014bb17bc68ca1167d3b295c5d3a357;p=common%2Fthrift.git THRIFT-2499 Compiler: allow annotations without "= value" Client: compiler general Patch: Dave Watson This closes #87 commit 078ce57e816eeb3697acf6f2c50e09526da73d3b Author: Dave Watson 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 62e13bad..da5c562f 100644 --- a/compiler/cpp/src/thrifty.yy +++ b/compiler/cpp/src/thrifty.yy @@ -187,6 +187,7 @@ const int struct_is_union = 1; %type TypeAnnotations %type TypeAnnotationList %type TypeAnnotation +%type TypeAnnotationValue %type Field %type FieldIdentifier @@ -1273,12 +1274,24 @@ TypeAnnotationList: } 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 dac476f5..06bf5719 100644 --- a/test/AnnotationTest.thrift +++ b/test/AnnotationTest.thrift @@ -28,6 +28,7 @@ struct foo { cpp.type = "DenseFoo", python.type = "DenseFoo", java.final = "", + annotation.without.value, ) exception foo_error {