Disambiguate nested objc-message-expressions and c++11 attributes
commit7b1908ce3b31728b3c4e56408c902135a99547c4
authordodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 Oct 2012 10:24:35 +0000 (10 10:24 +0000)
committerdodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 Oct 2012 10:24:35 +0000 (10 10:24 +0000)
tree808a7094d3bc267b2c5af74bca6f47c4072d6400
parentf66cf766e86ce1bb8bc18eae4b0a78ae2edab1a4
Disambiguate nested objc-message-expressions and c++11 attributes

A couple of obj-c++ tests were failing[1] because the tokens '[[' can
either be the beginning of a c++11 attribute (that is itself at the
beginning of a statement), or the beginning of a nested
objc-message-expression.  This patch resolves the ambiguity by
tentatively parsing the c++11 attribute and if it fails, then consider
the objc-message-expression.

I missed this initially because it didn't occur to me that
--enable-languages=all,ada does not include obj-c++.  Shame on me.  I
have now updated my compile farm scripts to use
--enable-language=all,ada,obj-c++,go and I

[1]:

FAIL: obj-c++.dg/syntax-error-6.mm -fgnu-runtime  (test for errors, line 11)
FAIL: obj-c++.dg/syntax-error-6.mm -fgnu-runtime (test for excess errors)
FAIL: obj-c++.dg/template-8.mm -fgnu-runtime (test for excess errors)

Tested on x86_64-unknown-linux-gnu against trunk.

gcc/cp/

* parser (cp_parser_statement):  Parse c++11 attributes tentatively.
(cp_parser_std_attribute_spec_seq): Do not warn too early about
using c++11 attributes in non c++11 mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192299 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/parser.c