[cfe-commits] r153793 - in /cfe/trunk: lib/ARCMigrate/TransUnusedInitDelegate.cpp test/ARCMT/init.m test/ARCMT/init.m.result
Argyrios Kyrtzidis
akyrtzi at gmail.com
Fri Mar 30 18:34:06 PDT 2012
Author: akirtzidis
Date: Fri Mar 30 20:34:06 2012
New Revision: 153793
URL: http://llvm.org/viewvc/llvm-project?rev=153793&view=rev
Log:
[arcmt] When fixing the "unassigned init call" ARC error, make sure
to do a nil check for the result of the call.
rdar://10950973
Modified:
cfe/trunk/lib/ARCMigrate/TransUnusedInitDelegate.cpp
cfe/trunk/test/ARCMT/init.m
cfe/trunk/test/ARCMT/init.m.result
Modified: cfe/trunk/lib/ARCMigrate/TransUnusedInitDelegate.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/TransUnusedInitDelegate.cpp?rev=153793&r1=153792&r2=153793&view=diff
==============================================================================
--- cfe/trunk/lib/ARCMigrate/TransUnusedInitDelegate.cpp (original)
+++ cfe/trunk/lib/ARCMigrate/TransUnusedInitDelegate.cpp Fri Mar 30 20:34:06 2012
@@ -54,7 +54,11 @@
Transaction Trans(Pass.TA);
Pass.TA.clearDiagnostic(diag::err_arc_unused_init_message,
ME->getExprLoc());
- Pass.TA.insert(ME->getExprLoc(), "self = ");
+ SourceRange ExprRange = ME->getSourceRange();
+ Pass.TA.insert(ExprRange.getBegin(), "if (!(self = ");
+ std::string retStr = ")) return ";
+ retStr += getNilString(Pass.Ctx);
+ Pass.TA.insertAfterToken(ExprRange.getEnd(), retStr);
}
return true;
}
Modified: cfe/trunk/test/ARCMT/init.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/init.m?rev=153793&r1=153792&r2=153793&view=diff
==============================================================================
--- cfe/trunk/test/ARCMT/init.m (original)
+++ cfe/trunk/test/ARCMT/init.m Fri Mar 30 20:34:06 2012
@@ -3,6 +3,8 @@
// RUN: diff %t %s.result
// DISABLE: mingw32
+#define nil (void *)0
+
@interface NSObject
-init;
@end
Modified: cfe/trunk/test/ARCMT/init.m.result
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/init.m.result?rev=153793&r1=153792&r2=153793&view=diff
==============================================================================
--- cfe/trunk/test/ARCMT/init.m.result (original)
+++ cfe/trunk/test/ARCMT/init.m.result Fri Mar 30 20:34:06 2012
@@ -3,6 +3,8 @@
// RUN: diff %t %s.result
// DISABLE: mingw32
+#define nil (void *)0
+
@interface NSObject
-init;
@end
@@ -16,7 +18,7 @@
@implementation A
-(id) init {
- self = [self init];
+ if (!(self = [self init])) return nil;
id a;
[a init];
a = [[A alloc] init];
@@ -25,7 +27,7 @@
}
-(id) init2 {
- self = [super init];
+ if (!(self = [super init])) return nil;
return self;
}
More information about the cfe-commits
mailing list