From: Fariborz Jahanian Date: Tue, 12 Aug 2014 22:16:41 +0000 (+0000) Subject: Objective-C [qoi]. Patch to not do Fix-It for fixing X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7c33b6163c35fe151b0a22f188065eecab3657f8;p=clang Objective-C [qoi]. Patch to not do Fix-It for fixing a messaging expression except in the simple case of a unary selector. We cannot reliably provide such a fixit due to numerous reasons where a matching selector could not be found. rdar://15756038 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215480 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp index 8ec2c177f7..3e7b620466 100644 --- a/lib/Sema/SemaExprObjC.cpp +++ b/lib/Sema/SemaExprObjC.cpp @@ -1366,9 +1366,12 @@ bool Sema::CheckMessageArgumentTypes(QualType ReceiverType, : diag::warn_instance_method_not_found_with_typo; Selector MatchedSel = OMD->getSelector(); SourceRange SelectorRange(SelectorLocs.front(), SelectorLocs.back()); - Diag(SelLoc, DiagID) - << Sel<< isClassMessage << MatchedSel - << FixItHint::CreateReplacement(SelectorRange, MatchedSel.getAsString()); + if (MatchedSel.isUnarySelector()) + Diag(SelLoc, DiagID) + << Sel<< isClassMessage << MatchedSel + << FixItHint::CreateReplacement(SelectorRange, MatchedSel.getAsString()); + else + Diag(SelLoc, DiagID) << Sel<< isClassMessage << MatchedSel; } else Diag(SelLoc, DiagID) diff --git a/test/FixIt/multiarg-selector-fixit.m b/test/FixIt/multiarg-selector-fixit.m new file mode 100644 index 0000000000..d60d31282c --- /dev/null +++ b/test/FixIt/multiarg-selector-fixit.m @@ -0,0 +1,15 @@ +// RUN: cp %s %t +// RUN: %clang_cc1 -x objective-c -fixit %t +// RUN: diff %t %s +// rdar://15756038 + +#define nil (void *)0 + +@interface NSObject +- (void)testDataSource:(id)object withMultipleArguments:(id)arguments; +@end + +int main() { + id obj; + [obj TestDataSource:nil withMultipleArguments:nil]; +}