Author: hokein Date: Mon Feb 12 04:26:12 2018 New Revision: 324886 URL: http://llvm.org/viewvc/llvm-project?rev=324886&view=rev Log: [clang-move] Fix the incorrect expansion end location.
Summary: Before the fix, if clang-move decides to move the following macro statement, it only moves the first line `DEFINE(A,`. ``` DEFINE(A, B); ``` Reviewers: ioeric Reviewed By: ioeric Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D43174 Modified: clang-tools-extra/trunk/clang-move/ClangMove.cpp clang-tools-extra/trunk/unittests/clang-move/ClangMoveTests.cpp Modified: clang-tools-extra/trunk/clang-move/ClangMove.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-move/ClangMove.cpp?rev=324886&r1=324885&r2=324886&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-move/ClangMove.cpp (original) +++ clang-tools-extra/trunk/clang-move/ClangMove.cpp Mon Feb 12 04:26:12 2018 @@ -280,7 +280,7 @@ SourceLocation getLocForEndOfDecl(const clang::Decl *D, const LangOptions &LangOpts = clang::LangOptions()) { const auto &SM = D->getASTContext().getSourceManager(); - auto EndExpansionLoc = SM.getExpansionLoc(D->getLocEnd()); + auto EndExpansionLoc = SM.getExpansionRange(D->getLocEnd()).second; std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(EndExpansionLoc); // Try to load the file buffer. bool InvalidTemp = false; Modified: clang-tools-extra/trunk/unittests/clang-move/ClangMoveTests.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clang-move/ClangMoveTests.cpp?rev=324886&r1=324885&r2=324886&view=diff ============================================================================== --- clang-tools-extra/trunk/unittests/clang-move/ClangMoveTests.cpp (original) +++ clang-tools-extra/trunk/unittests/clang-move/ClangMoveTests.cpp Mon Feb 12 04:26:12 2018 @@ -431,12 +431,16 @@ TEST(ClangMove, MacroInFunction) { TEST(ClangMove, DefinitionInMacro) { const char TestHeader[] = "#define DEF(CLASS) void CLASS##_::f() {}\n" - "class A_ {\nvoid f();\n};\n" + "#define DEF2(CLASS, ...) void CLASS##_::f2() {}\n" + "class A_ {\nvoid f();\nvoid f2();\n};\n" "class B {};\n"; const char TestCode[] = "#include \"foo.h\"\n" - "DEF(A)\n"; + "DEF(A)\n\n" + "DEF2(A,\n" + " 123)\n"; const char ExpectedNewCode[] = "#include \"new_foo.h\"\n\n" - "DEF(A)\n"; + "DEF(A)\n\n" + "DEF2(A, 123)\n"; move::MoveDefinitionSpec Spec; Spec.Names.push_back("A_"); Spec.OldHeader = "foo.h"; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits