[cfe-commits] r128344 - in /cfe/trunk: lib/Parse/ParseObjc.cpp test/Parser/selector-1.m
Chris Lattner
sabre at nondot.org
Sat Mar 26 11:11:39 PDT 2011
Author: lattner
Date: Sat Mar 26 13:11:38 2011
New Revision: 128344
URL: http://llvm.org/viewvc/llvm-project?rev=128344&view=rev
Log:
fix the second part of rdar://8366474 - clang fails to parse ObjC selectors with '::', when :: isn't the first part of the selector.
Modified:
cfe/trunk/lib/Parse/ParseObjc.cpp
cfe/trunk/test/Parser/selector-1.m
Modified: cfe/trunk/lib/Parse/ParseObjc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=128344&r1=128343&r2=128344&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseObjc.cpp (original)
+++ cfe/trunk/lib/Parse/ParseObjc.cpp Sat Mar 26 13:11:38 2011
@@ -2350,7 +2350,7 @@
return ExprError(Diag(Tok, diag::err_expected_colon));
++nColons;
- ConsumeToken(); // Eat the ':'.
+ ConsumeToken(); // Eat the ':' or '::'.
if (Tok.is(tok::r_paren))
break;
@@ -2366,7 +2366,7 @@
SourceLocation Loc;
SelIdent = ParseObjCSelectorPiece(Loc);
KeyIdents.push_back(SelIdent);
- if (!SelIdent && Tok.isNot(tok::colon))
+ if (!SelIdent && Tok.isNot(tok::colon) && Tok.isNot(tok::coloncolon))
break;
}
}
Modified: cfe/trunk/test/Parser/selector-1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/selector-1.m?rev=128344&r1=128343&r2=128344&view=diff
==============================================================================
--- cfe/trunk/test/Parser/selector-1.m (original)
+++ cfe/trunk/test/Parser/selector-1.m Sat Mar 26 13:11:38 2011
@@ -1,14 +1,20 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s
+// rdar://8366474
int main() {
- SEL s = @selector(retain);
- SEL s1 = @selector(meth1:);
- SEL s2 = @selector(retainArgument::);
- SEL s3 = @selector(retainArgument:::::);
- SEL s4 = @selector(retainArgument:with:);
- SEL s5 = @selector(meth1:with:with:);
- SEL s6 = @selector(getEnum:enum:bool:);
- SEL s7 = @selector(char:float:double:unsigned:short:long:);
-
- SEL s9 = @selector(:enum:bool:);
+ SEL s = @selector(retain);
+ SEL s1 = @selector(meth1:);
+ SEL s2 = @selector(retainArgument::);
+ SEL s3 = @selector(retainArgument:::::);
+ SEL s4 = @selector(retainArgument:with:);
+ SEL s5 = @selector(meth1:with:with:);
+ SEL s6 = @selector(getEnum:enum:bool:);
+ SEL s7 = @selector(char:float:double:unsigned:short:long:);
+ SEL s9 = @selector(:enum:bool:);
+
+ (void) @selector(foo:);
+ (void) @selector(foo::);
+ (void) @selector(foo:::);
+ (void) @selector(foo::::);
}
More information about the cfe-commits
mailing list