In cp/parser.c:cp_parser_declaration(), we have the following code /* Try to figure out what kind of declaration is present. */ token1 = *cp_lexer_peek_token (parser->lexer);
if (token1.type != CPP_EOF) token2 = *cp_lexer_peek_nth_token (parser->lexer, 2); else token2.type = token2.keyword = RID_MAX; It looks to me like the last line is a typo for { token2.type = CPP_EOF; token2.keyword = RID_MAX; } as cp_token::type and cp_token::keyword are of different types and we don't seem to mix them except at that single place. Is that correct? -- Gaby PS: that was caught by a build of cp/parser.c with g++.