[Bug objc/94637] [10 Regression] @selector() broken for selectors containing repeated colons

2020-04-19 Thread jakub at gcc dot gnu.org
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

2020-04-19 Thread cvs-commit at gcc dot gnu.org
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

2020-04-17 Thread jakub at gcc dot gnu.org
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

2020-04-17 Thread law at redhat dot com
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

2020-04-17 Thread pinskia at gcc dot gnu.org
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

2020-04-17 Thread pinskia at gcc dot gnu.org
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.