[cfe-commits] r64764 - in /cfe/branches/Apple/objective-rewrite/tools/clang: Driver/RewriteObjC.cpp test/Rewriter/properties.m
Steve Naroff
snaroff at apple.com
Tue Feb 17 07:05:39 PST 2009
Author: snaroff
Date: Tue Feb 17 09:05:38 2009
New Revision: 64764
URL: http://llvm.org/viewvc/llvm-project?rev=64764&view=rev
Log:
Fix <rdar://problem/6557148> clang ObjC rewriter: Crash rewriting attached test case (properties?).
RewriteObjC::SynthMessageExpr() should *not* null out the arguments in the original message expression (since we will need them in RewritePropertySetter()).
Modified:
cfe/branches/Apple/objective-rewrite/tools/clang/Driver/RewriteObjC.cpp
cfe/branches/Apple/objective-rewrite/tools/clang/test/Rewriter/properties.m
Modified: cfe/branches/Apple/objective-rewrite/tools/clang/Driver/RewriteObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/Apple/objective-rewrite/tools/clang/Driver/RewriteObjC.cpp?rev=64764&r1=64763&r2=64764&view=diff
==============================================================================
--- cfe/branches/Apple/objective-rewrite/tools/clang/Driver/RewriteObjC.cpp (original)
+++ cfe/branches/Apple/objective-rewrite/tools/clang/Driver/RewriteObjC.cpp Tue Feb 17 09:05:38 2009
@@ -2430,9 +2430,10 @@
}
}
MsgExprs.push_back(userExpr);
- // We've transferred the ownership to MsgExprs. Null out the argument in
- // the original expression, since we will delete it below.
- Exp->setArg(i, 0);
+ // We've transferred the ownership to MsgExprs. For now, we *don't* null
+ // out the argument in the original expression (since we aren't deleting
+ // the ObjCMessageExpr). See RewritePropertySetter() usage for more info.
+ //Exp->setArg(i, 0);
}
// Generate the funky cast.
CastExpr *cast;
@@ -2543,13 +2544,13 @@
new ConditionalOperator(lessThanExpr, CE, STCE, returnType);
ReplacingStmt = new ParenExpr(SourceLocation(), SourceLocation(), CondExpr);
}
+ // delete Exp; leak for now, see RewritePropertySetter() usage for more info.
return ReplacingStmt;
}
Stmt *RewriteObjC::RewriteMessageExpr(ObjCMessageExpr *Exp) {
Stmt *ReplacingStmt = SynthMessageExpr(Exp);
- //ReplacingStmt->dump();
// Now do the actual rewrite.
ReplaceStmt(Exp, ReplacingStmt);
Modified: cfe/branches/Apple/objective-rewrite/tools/clang/test/Rewriter/properties.m
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/Apple/objective-rewrite/tools/clang/test/Rewriter/properties.m?rev=64764&r1=64763&r2=64764&view=diff
==============================================================================
--- cfe/branches/Apple/objective-rewrite/tools/clang/test/Rewriter/properties.m (original)
+++ cfe/branches/Apple/objective-rewrite/tools/clang/test/Rewriter/properties.m Tue Feb 17 09:05:38 2009
@@ -52,3 +52,24 @@
obj1.o.i = 77;
}
@end
+
+ at class NSString;
+ at interface NSCoder
+- (float)decodeFloatForKey:(NSString *)key;
+- (float)decodeFloat;
+ at end
+ at interface Window {
+ float thickness;
+}
+ at property float thickness;
+ at end
+ at implementation Window
+ at synthesize thickness;
+
+- (id)initWithCoder:(NSCoder *)coder
+{
+ self.thickness = [coder decodeFloat];
+ self.thickness = [coder decodeFloatForKey:@"thickness"];
+}
+
+ at end
More information about the cfe-commits
mailing list