summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2019-04-05 22:11:28 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2019-04-05 22:11:28 +0000
commit4a9007cde74b6c700d3a5614fa176b456a86dd66 (patch)
treeb5d3366ee426a3f0e3b6ce2e53ce8cb2feaf1bee /clang
parentcb70fe1c69a2eadda02682383e1f3e877409090d (diff)
downloadbcm5719-llvm-4a9007cde74b6c700d3a5614fa176b456a86dd66.tar.gz
bcm5719-llvm-4a9007cde74b6c700d3a5614fa176b456a86dd66.zip
Revert "[Lexer] NFC: Fix an off-by-one bug in getAsCharRange()."
This reverts commit r357823. Was breaking clang-tidy! Differential Revision: https://reviews.llvm.org/D59977 llvm-svn: 357827
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Basic/PlistSupport.h6
-rw-r--r--clang/include/clang/Lex/Lexer.h2
-rw-r--r--clang/unittests/Lex/LexerTest.cpp19
3 files changed, 2 insertions, 25 deletions
diff --git a/clang/include/clang/Basic/PlistSupport.h b/clang/include/clang/Basic/PlistSupport.h
index 557462a5b90..f81b469bb87 100644
--- a/clang/include/clang/Basic/PlistSupport.h
+++ b/clang/include/clang/Basic/PlistSupport.h
@@ -127,11 +127,7 @@ inline void EmitRange(raw_ostream &o, const SourceManager &SM,
assert(R.isCharRange() && "cannot handle a token range");
Indent(o, indent) << "<array>\n";
EmitLocation(o, SM, R.getBegin(), FM, indent + 1);
-
- // The ".getLocWithOffset(-1)" emulates the behavior of an off-by-one bug
- // in Lexer that is already fixed. It is here for backwards compatibility
- // even though it is incorrect.
- EmitLocation(o, SM, R.getEnd().getLocWithOffset(-1), FM, indent + 1);
+ EmitLocation(o, SM, R.getEnd(), FM, indent + 1);
Indent(o, indent) << "</array>\n";
}
diff --git a/clang/include/clang/Lex/Lexer.h b/clang/include/clang/Lex/Lexer.h
index 69cfe62e4bd..4a8a0f6f0d6 100644
--- a/clang/include/clang/Lex/Lexer.h
+++ b/clang/include/clang/Lex/Lexer.h
@@ -382,7 +382,7 @@ public:
SourceLocation End = getLocForEndOfToken(Range.getEnd(), 0, SM, LangOpts);
return End.isInvalid() ? CharSourceRange()
: CharSourceRange::getCharRange(
- Range.getBegin(), End);
+ Range.getBegin(), End.getLocWithOffset(-1));
}
static CharSourceRange getAsCharRange(CharSourceRange Range,
const SourceManager &SM,
diff --git a/clang/unittests/Lex/LexerTest.cpp b/clang/unittests/Lex/LexerTest.cpp
index 7b14f56201e..320b60ea639 100644
--- a/clang/unittests/Lex/LexerTest.cpp
+++ b/clang/unittests/Lex/LexerTest.cpp
@@ -513,23 +513,4 @@ TEST_F(LexerTest, StringizingRasString) {
EXPECT_EQ(String6, R"(a\\\n\n\n \\\\b)");
}
-TEST_F(LexerTest, CharRangeOffByOne) {
- std::vector<Token> toks = Lex(R"(#define MOO 1
- void foo() { MOO; })");
- const Token &moo = toks[5];
-
- EXPECT_EQ(getSourceText(moo, moo), "MOO");
-
- SourceRange R{moo.getLocation(), moo.getLocation()};
-
- EXPECT_TRUE(
- Lexer::isAtStartOfMacroExpansion(R.getBegin(), SourceMgr, LangOpts));
- EXPECT_TRUE(
- Lexer::isAtEndOfMacroExpansion(R.getEnd(), SourceMgr, LangOpts));
-
- CharSourceRange CR = Lexer::getAsCharRange(R, SourceMgr, LangOpts);
-
- EXPECT_EQ(Lexer::getSourceText(CR, SourceMgr, LangOpts), "MOO"); // Was "MO".
-}
-
} // anonymous namespace
OpenPOWER on IntegriCloud