Remove a couple FIXME's for rewriting ObjC interfaces (which are now being rewritten properly).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43494 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp
index 8063574..be09eed 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 @@
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 @@
// FIXME: handle methods that are declared across multiple lines.
}
+ // Lastly, comment out the @end.
+ Rewrite.ReplaceText(ClassDecl->getAtEndLoc(), 0, "// ", 3);
}
//===----------------------------------------------------------------------===//
diff --git a/Parse/ParseObjc.cpp b/Parse/ParseObjc.cpp
index 0c0c165..b2323a2 100644
--- a/Parse/ParseObjc.cpp
+++ b/Parse/ParseObjc.cpp
@@ -271,10 +271,11 @@
ParseDeclarationOrFunctionDefinition();
}
}
- if (allMethods.size())
- /// Insert collected methods declarations into the @interface object.
- Actions.ActOnAddMethodsToObjcDecl(CurScope, interfaceDecl, &allMethods[0],
- allMethods.size(), AtEndLoc);
+ /// Insert collected methods declarations into the @interface object.
+ /// This action is executed even if we don't have any methods (so the @end
+ /// can be recorded properly).
+ Actions.ActOnAddMethodsToObjcDecl(CurScope, interfaceDecl, &allMethods[0],
+ allMethods.size(), AtEndLoc);
}
/// Parse property attribute declarations.
diff --git a/Sema/SemaDecl.cpp b/Sema/SemaDecl.cpp
index be34dfb..8d3887a 100644
--- a/Sema/SemaDecl.cpp
+++ b/Sema/SemaDecl.cpp
@@ -1861,7 +1861,7 @@
// should be true.
if (!ClassDecl)
return;
-
+
llvm::SmallVector<ObjcMethodDecl*, 32> insMethods;
llvm::SmallVector<ObjcMethodDecl*, 16> clsMethods;
diff --git a/clang.xcodeproj/project.pbxproj b/clang.xcodeproj/project.pbxproj
index fe4cf8d..de41b46 100644
--- a/clang.xcodeproj/project.pbxproj
+++ b/clang.xcodeproj/project.pbxproj
@@ -756,7 +756,6 @@
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "clang" */;
- compatibilityVersion = "Xcode 2.4";
hasScannedForEncodings = 1;
mainGroup = 08FB7794FE84155DC02AAC07 /* clang */;
projectDirPath = "";