aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/parser.c
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2011-01-12 09:36:49 +0000
committerNicola Pero <nicola@gcc.gnu.org>2011-01-12 09:36:49 +0000
commitd853ee42d2bd96a3d589e349c57a2e71e4ace38f (patch)
tree94f847fad123463cc94e0e6a45f68519e3d44e56 /gcc/cp/parser.c
parentf2ee78b861b8daab2675e1a24798b1069f763dc0 (diff)
downloadgcc-d853ee42d2bd96a3d589e349c57a2e71e4ace38f.zip
gcc-d853ee42d2bd96a3d589e349c57a2e71e4ace38f.tar.gz
gcc-d853ee42d2bd96a3d589e349c57a2e71e4ace38f.tar.bz2
In gcc/: 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/: 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com> * c-parser.c (c_parser_objc_at_property_declaration): Improved error message. 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com> * c-parser.c (c_lex_one_token): Updated and reindented some comments. No changes in code. In gcc/cp/: 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com> * parser.c (cp_parser_objc_at_property_declaration): Improved error message. In gcc/testsuite/: 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com> * objc.dg/property/at-property-29.m: New. * obj-c++.dg/property/at-property-29.mm: New. From-SVN: r168698
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r--gcc/cp/parser.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 2f11f8e..e63d976 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -23087,8 +23087,12 @@ cp_parser_objc_at_property_declaration (cp_parser *parser)
case RID_SETTER:
if (cp_lexer_next_token_is_not (parser->lexer, CPP_EQ))
{
- cp_parser_error (parser,
- "getter/setter/ivar attribute must be followed by %<=%>");
+ if (keyword == RID_GETTER)
+ cp_parser_error (parser,
+ "missing %<=%> (after %<getter%> attribute)");
+ else
+ cp_parser_error (parser,
+ "missing %<=%> (after %<setter%> attribute)");
syntax_error = true;
break;
}
@@ -23128,13 +23132,17 @@ cp_parser_objc_at_property_declaration (cp_parser *parser)
if (syntax_error)
break;
-
+
if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA))
cp_lexer_consume_token (parser->lexer);
else
break;
}
+ /* FIXME: "@property (setter, assign);" will generate a spurious
+ "error: expected ‘)’ before ‘,’ token". This is because
+ cp_parser_require, unlike the C counterpart, will produce an
+ error even if we are in error recovery. */
if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN))
{
cp_parser_skip_to_closing_parenthesis (parser,