aboutsummaryrefslogtreecommitdiff
path: root/Driver/RewriteTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Driver/RewriteTest.cpp')
-rw-r--r--Driver/RewriteTest.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp
index 8063574750..be09eede31 100644
--- a/Driver/RewriteTest.cpp
+++ b/Driver/RewriteTest.cpp
@@ -19,6 +19,7 @@
#include "clang/Basic/IdentifierTable.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
+#include "clang/Lex/Lexer.h"
using namespace clang;
using llvm::utostr;
@@ -271,18 +272,12 @@ void RewriteTest::RewriteInterfaceDecl(ObjcInterfaceDecl *ClassDecl) {
const char *startBuf = SM->getCharacterData(LocStart);
const char *endBuf = SM->getCharacterData(LocEnd);
- // FIXME: need to consider empty class decls (no vars, methods)...
- // @interface NSConstantString : NSSimpleCString
- // @end
-
- if (*endBuf != '>' && *endBuf != '}')
- // we have an identifier - scan ahead until the end of token.
- endBuf = strchr(endBuf, ' '); // FIXME: implement correctly.
+ endBuf += Lexer::MeasureTokenLength(LocEnd, *SM);
std::string ResultStr;
SynthesizeObjcInternalStruct(ClassDecl, ResultStr);
- Rewrite.ReplaceText(LocStart, endBuf-startBuf+1,
+ Rewrite.ReplaceText(LocStart, endBuf-startBuf,
ResultStr.c_str(), ResultStr.size());
int nInstanceMethods = ClassDecl->getNumInstanceMethods();
@@ -307,6 +302,8 @@ void RewriteTest::RewriteInterfaceDecl(ObjcInterfaceDecl *ClassDecl) {
// FIXME: handle methods that are declared across multiple lines.
}
+ // Lastly, comment out the @end.
+ Rewrite.ReplaceText(ClassDecl->getAtEndLoc(), 0, "// ", 3);
}
//===----------------------------------------------------------------------===//