From: mmitchel Date: Tue, 13 Sep 2005 02:41:07 +0000 (+0000) Subject: PR c++/23841 X-Git-Tag: upstream/4.9.2~58671 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c6e71399b3171a2c33ede2bac27c6f79e267cd6a;p=platform%2Fupstream%2Flinaro-gcc.git PR c++/23841 * parser.c (cp_parser_primary_expression): Recognize the closing ">" of a template-argument-list after a floating-point literal as the end of a cast expression. PR c++/23841 * g++.dg/parse/template17.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104208 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6ce6f5f..cd19181 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,12 @@ 2005-09-12 Mark Mitchell + PR c++/23841 + * parser.c (cp_parser_primary_expression): Recognize the closing + ">" of a template-argument-list after a floating-point literal as + the end of a cast expression. + +2005-09-12 Mark Mitchell + PR c++/23789 * cvt.c (perform_qualification_conversions): Don't create unnecessary NOP_EXPRs. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index a8a2c49..0f8d17c 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -2779,7 +2779,10 @@ cp_parser_primary_expression (cp_parser *parser, /* The end of the cast-expression. */ && next_token->type != CPP_CLOSE_PAREN /* The end of an array bound. */ - && next_token->type != CPP_CLOSE_SQUARE) + && next_token->type != CPP_CLOSE_SQUARE + /* The closing ">" in a template-argument-list. */ + && (next_token->type != CPP_GREATER + || parser->greater_than_is_operator_p)) cast_p = false; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9678760..26919da 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2005-09-12 Mark Mitchell + PR c++/23841 + * g++.dg/parse/template17.C: New test. + +2005-09-12 Mark Mitchell + PR c++/23789 * g++.dg/template/nontype14.C: New test. diff --git a/gcc/testsuite/g++.dg/parse/template17.C b/gcc/testsuite/g++.dg/parse/template17.C new file mode 100644 index 0000000..ade598d --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/template17.C @@ -0,0 +1,13 @@ +// PR c++/23841 + +template +struct S +{ + int f(int i = I) { return i; } +}; + +void +g () +{ + S<(int)0.> a2; +}