From 41f7b1a854362f7de5cb6d6b0c2964373dede51d Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Fri, 1 Feb 2013 20:04:49 +0000 Subject: [PATCH] objc: Provide correct fixit instruction when two mismatched nsstringis are compared without. // rdar://12716301 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174214 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaExpr.cpp | 5 +++-- test/FixIt/fixit-nsstring-compare.m | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 test/FixIt/fixit-nsstring-compare.m diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 6c76725880..2167f01b63 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -6964,11 +6964,12 @@ static void diagnoseObjCLiteralComparison(Sema &S, SourceLocation Loc, hasIsEqualMethod(S, LHS.get(), RHS.get())) { SourceLocation Start = LHS.get()->getLocStart(); SourceLocation End = S.PP.getLocForEndOfToken(RHS.get()->getLocEnd()); - SourceRange OpRange(Loc, S.PP.getLocForEndOfToken(Loc)); + CharSourceRange OpRange = + CharSourceRange::getCharRange(Loc, S.PP.getLocForEndOfToken(Loc)); S.Diag(Loc, diag::note_objc_literal_comparison_isequal) << FixItHint::CreateInsertion(Start, Opc == BO_EQ ? "[" : "![") - << FixItHint::CreateReplacement(OpRange, "isEqual:") + << FixItHint::CreateReplacement(OpRange, " isEqual:") << FixItHint::CreateInsertion(End, "]"); } } diff --git a/test/FixIt/fixit-nsstring-compare.m b/test/FixIt/fixit-nsstring-compare.m new file mode 100644 index 0000000000..6f0877c059 --- /dev/null +++ b/test/FixIt/fixit-nsstring-compare.m @@ -0,0 +1,22 @@ +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fdiagnostics-parseable-fixits -x objective-c %s 2>&1 | FileCheck %s +// rdar://12716301 + +typedef unsigned char BOOL; + +@protocol NSObject +- (BOOL)isEqual:(id)object; +@end + +@interface NSString +@end + +int main() { + NSString *stringA = @"stringA"; + + BOOL comparison = stringA==@"stringB"; + +} + +// CHECK: {16:21-16:21}:"[" +// CHECK: {16:28-16:30}:" isEqual:" +// CHECK: {16:40-16:40}:"]" -- 2.40.0