Hi!
On Sun, Oct 28, 2012 at 12:27:40PM +0100, Paolo Carlini wrote:
> --- gcc/cp/parser.c (revision 192887)
> +++ gcc/cp/parser.c (working copy)
> @@ -12655,9 +12655,8 @@ cp_parser_template_id (cp_parser *parser,
> /* Otherwise, emit an error about the invalid digraph, but continue
> parsing because we got our argument list. In C++11 do not emit
> any error, per 2.5/3. */
Shouldn't the "In C++11 do not emit"... sentence be removed from the comment
as well?
> - if (cxx_dialect < cxx0x
> - && permerror (next_token->location,
> - "%<<::%> cannot begin a template-argument list"))
> + if (permerror (next_token->location,
> + "%<<::%> cannot begin a template-argument list"))
> {
> static bool hint = false;
> inform (next_token->location,
> --- libcpp/lex.c (revision 192887)
> +++ libcpp/lex.c (working copy)
> @@ -2291,6 +2291,25 @@ _cpp_lex_direct (cpp_reader *pfile)
> if (*buffer->cur == ':')
> {
> buffer->cur++;
> +
> + /* C++11 - 2.5 p3, bullet 2. */
> + if (CPP_OPTION (pfile, cplusplus)
> + && (CPP_OPTION (pfile, lang) == CLK_CXX11
> + || CPP_OPTION (pfile, lang) == CLK_GNUCXX11))
> + {
> + if (*buffer->cur == ':')
> + {
> + buffer->cur++;
> + if (*buffer->cur != ':' && *buffer->cur != '>')
> + {
> + --buffer->cur;
> + --buffer->cur;
> + break;
> + }
> + --buffer->cur;
I'd say way too many ++/-- above. I'd write it as:
- buffer->cur++;
+
+ /* C++11 - 2.5 p3, bullet 2. */
+ if (CPP_OPTION (pfile, cplusplus)
+ && (CPP_OPTION (pfile, lang) == CLK_CXX11
+ || CPP_OPTION (pfile, lang) == CLK_GNUCXX11)
+ && buffer->cur[1] == ':'
+ && buffer->cur[2] != ':' && buffer->cur[2] != '>')
+ break;
+
+ buffer->cur++;
Jakub