Fixed toHalfOpenFileRange assertion fail
Summary:
- Added new function that gets Expansion range with both ends in the same file.
- Fixes the crash at https://github.com/clangd/clangd/issues/113
Subscribers: ilya-biryukov, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D65754
llvm-svn: 368058
diff --git a/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp b/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp
index 6f937e6..47d1f80 100644
--- a/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp
+++ b/clang-tools-extra/clangd/unittests/SourceCodeTests.cpp
@@ -460,15 +460,22 @@
#define FOO(X, Y) int Y = ++X
#define BAR(X) X + 1
#define ECHO(X) X
+
+ #define BUZZ BAZZ(ADD)
+ #define BAZZ(m) m(1)
+ #define ADD(a) int f = a + 1;
template<typename T>
class P {};
- void f() {
+
+ int main() {
$a[[P<P<P<P<P<int>>>>> a]];
$b[[int b = 1]];
$c[[FOO(b, c)]];
$d[[FOO(BAR(BAR(b)), d)]];
// FIXME: We might want to select everything inside the outer ECHO.
ECHO(ECHO($e[[int) ECHO(e]]));
+ // Shouldn't crash.
+ $f[[BUZZ]];
}
)cpp");
@@ -495,6 +502,7 @@
CheckRange("c");
CheckRange("d");
CheckRange("e");
+ CheckRange("f");
}
} // namespace