[Bug objc/94637] [10 Regression] @selector() broken for selectors containing repeated colons
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94637 Jakub Jelinek changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #7 from Jakub Jelinek --- Fixed.
[Bug objc/94637] [10 Regression] @selector() broken for selectors containing repeated colons
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94637 --- Comment #6 from CVS Commits --- The master branch has been updated by Jakub Jelinek : https://gcc.gnu.org/g:e1113ffbd619d0568fb3b37e9660d9e0ae7862f5 commit r10-7794-ge1113ffbd619d0568fb3b37e9660d9e0ae7862f5 Author: Jakub Jelinek Date: Sun Apr 19 12:13:33 2020 +0200 c, objc: Fix up c_parser_objc_selector_arg after CPP_SCOPE changes [PR94637] Similarly to inline asm, :: (or any other number of consecutive colons) can appear in ObjC @selector argument and with the introduction of CPP_SCOPE into the C FE, we need to trat CPP_SCOPE as two CPP_COLON tokens. The C++ FE does that already that way. 2020-04-19 Jakub Jelinek PR objc/94637 * c-parser.c (c_parser_objc_selector_arg): Handle CPP_SCOPE like two CPP_COLON tokens. * objc.dg/pr94637.m: New test.
[Bug objc/94637] [10 Regression] @selector() broken for selectors containing repeated colons
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94637 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek --- So like: --- gcc/c/c-parser.c.jj 2020-04-17 16:59:28.727193750 +0200 +++ gcc/c/c-parser.c2020-04-17 20:00:59.816403446 +0200 @@ -11782,15 +11782,28 @@ c_parser_objc_selector_arg (c_parser *pa { tree sel = c_parser_objc_selector (parser); tree list = NULL_TREE; - if (sel && c_parser_next_token_is_not (parser, CPP_COLON)) + if (sel + && c_parser_next_token_is_not (parser, CPP_COLON) + && c_parser_next_token_is_not (parser, CPP_SCOPE)) return sel; while (true) { - if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) - return list; - list = chainon (list, build_tree_list (sel, NULL_TREE)); + if (c_parser_next_token_is (parser, CPP_SCOPE)) + { + c_parser_consume_token (parser); + list = chainon (list, build_tree_list (sel, NULL_TREE)); + list = chainon (list, build_tree_list (NULL_TREE, NULL_TREE); + } + else + { + if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) + return list; + list = chainon (list, build_tree_list (sel, NULL_TREE)); + } sel = c_parser_objc_selector (parser); - if (!sel && c_parser_next_token_is_not (parser, CPP_COLON)) + if (!sel + && c_parser_next_token_is_not (parser, CPP_COLON) + && c_parser_next_token_is_not (parser, CPP_SCOPE)) break; } return list; ? Completely untested, will try later.
[Bug objc/94637] [10 Regression] @selector() broken for selectors containing repeated colons
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94637 Jeffrey A. Law changed: What|Removed |Added CC||law at redhat dot com Priority|P3 |P4
[Bug objc/94637] [10 Regression] @selector() broken for selectors containing repeated colons
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94637 --- Comment #4 from Andrew Pinski --- The change needs to happen inside c_parser_objc_selector_arg.
[Bug objc/94637] [10 Regression] @selector() broken for selectors containing repeated colons
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94637 Andrew Pinski changed: What|Removed |Added Ever confirmed|0 |1 Keywords||rejects-valid Target Milestone|--- |10.0 Status|UNCONFIRMED |NEW Last reconfirmed||2020-04-17 Summary|@selector() broken for |[10 Regression] @selector() |selectors containing|broken for selectors |repeated colons |containing repeated colons --- Comment #3 from Andrew Pinski --- Most likely caused by g:93313b94fe18f3c3de4f24f5bb3fafb4639f1c7e . That is CPP_SCOPE should be treated as two CPP_COLON tokens while parsing @selector like was done for asm parsing.