From 7c33b6163c35fe151b0a22f188065eecab3657f8 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Tue, 12 Aug 2014 22:16:41 +0000 Subject: [PATCH] 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 --- lib/Sema/SemaExprObjC.cpp | 9 ++++++--- test/FixIt/multiarg-selector-fixit.m | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 test/FixIt/multiarg-selector-fixit.m 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]; +} -- 2.50.1