Author: fjahanian
Date: Mon May 24 12:22:38 2010
New Revision: 104512
URL: http://llvm.org/viewvc/llvm-project?rev=104512&view=rev
Log:
Fix an objective-c rewriter bug when pre-processed file's
class declaration's @end is not followed by a new-line.
(radar 7946975).
Added:
cfe/trunk/test/Rewriter/rewrite-no-nextline.mm
Modified:
cfe/trunk/lib/Frontend/RewriteObjC.cpp
Modified: cfe/trunk/lib/Frontend/RewriteObjC.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/RewriteObjC.cpp?rev=104512&r1=104511&r2=104512&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/RewriteObjC.cpp (original)
+++ cfe/trunk/lib/Frontend/RewriteObjC.cpp Mon May 24 12:22:38 2010
@@ -971,7 +971,8 @@
RewriteMethodDeclaration(*I);
// Lastly, comment out the @end.
- ReplaceText(CatDecl->getAtEndRange().getBegin(), 0, "// ");
+ ReplaceText(CatDecl->getAtEndRange().getBegin(),
+ strlen("@end"), "/* @end */");
}
void RewriteObjC::RewriteProtocolDecl(ObjCProtocolDecl *PDecl) {
@@ -991,7 +992,7 @@
// Lastly, comment out the @end.
SourceLocation LocEnd = PDecl->getAtEndRange().getBegin();
- ReplaceText(LocEnd, 0, "// ");
+ ReplaceText(LocEnd, strlen("@end"), "/* @end */");
// Must comment out @optional/@required
const char *startBuf = SM->getCharacterData(LocStart);
@@ -1220,7 +1221,8 @@
RewriteMethodDeclaration(*I);
// Lastly, comment out the @end.
- ReplaceText(ClassDecl->getAtEndRange().getBegin(), 0, "// ");
+ ReplaceText(ClassDecl->getAtEndRange().getBegin(), strlen("@end"),
+ "/* @end */");
}
Stmt *RewriteObjC::RewritePropertySetter(BinaryOperator *BinOp, Expr *newStmt,
Added: cfe/trunk/test/Rewriter/rewrite-no-nextline.mm
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-no-nextline.mm?rev=104512&view=auto
==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-no-nextline.mm (added)
+++ cfe/trunk/test/Rewriter/rewrite-no-nextline.mm Mon May 24 12:22:38 2010
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions
-rewrite-objc %s -o %t-rw.cpp
+// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*"
-D"__declspec(X)=" %t-rw.cpp
+// radar 7946975
+
+...@interface RootObject {
+}
+...@end void doStuff();
+int main(int argc, char *argv[]) {
+ return 0;
+}
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits