diff options
author | Haojian Wu <hokein@google.com> | 2019-08-26 08:38:45 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2019-08-26 08:38:45 +0000 |
commit | 0a6000f2cbb40abd008338895a471f474347b80d (patch) | |
tree | e74fbafb1652c862315e98e18e85c8345a0028cb /clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp | |
parent | 72ca5f36944ee01566ca1a42083e52315ea4264a (diff) | |
download | bcm5719-llvm-0a6000f2cbb40abd008338895a471f474347b80d.tar.gz bcm5719-llvm-0a6000f2cbb40abd008338895a471f474347b80d.zip |
[clangd] Send highlighting diff beyond the end of the file.
Summary: This would make the client life (tracking the changes) easier.
Reviewers: jvikstrom
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66541
llvm-svn: 369884
Diffstat (limited to 'clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp')
-rw-r--r-- | clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp index 903f719132a..8a782644254 100644 --- a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp +++ b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp @@ -18,6 +18,9 @@ namespace clang { namespace clangd { namespace { +MATCHER_P(LineNumber, L, "") { return arg.Line == L; } +MATCHER(EmptyHighlightings, "") { return arg.Tokens.empty(); } + std::vector<HighlightingToken> makeHighlightingTokens(llvm::ArrayRef<Range> Ranges, HighlightingKind Kind) { std::vector<HighlightingToken> Tokens(Ranges.size()); @@ -92,9 +95,10 @@ void checkDiffedHighlights(llvm::StringRef OldCode, llvm::StringRef NewCode) { {LineTokens.first, LineTokens.second}); std::vector<LineHighlightings> ActualDiffed = - diffHighlightings(NewTokens, OldTokens, NewCode.count('\n')); + diffHighlightings(NewTokens, OldTokens); EXPECT_THAT(ActualDiffed, - testing::UnorderedElementsAreArray(ExpectedLinePairHighlighting)); + testing::UnorderedElementsAreArray(ExpectedLinePairHighlighting)) + << OldCode; } TEST(SemanticHighlighting, GetsCorrectTokens) { @@ -463,9 +467,8 @@ TEST(SemanticHighlighting, GeneratesHighlightsWhenFileChange) { std::atomic<int> Count = {0}; void onDiagnosticsReady(PathRef, std::vector<Diag>) override {} - void onHighlightingsReady(PathRef File, - std::vector<HighlightingToken> Highlightings, - int NLines) override { + void onHighlightingsReady( + PathRef File, std::vector<HighlightingToken> Highlightings) override { ++Count; } }; @@ -574,17 +577,6 @@ TEST(SemanticHighlighting, HighlightingDiffer) { R"( $Class[[A]] $Variable[[A]] - $Class[[A]] - $Variable[[A]] - )", - R"( - $Class[[A]] - $Variable[[A]] - )"}, - { - R"( - $Class[[A]] - $Variable[[A]] )", R"( $Class[[A]] @@ -608,6 +600,32 @@ TEST(SemanticHighlighting, HighlightingDiffer) { checkDiffedHighlights(Test.OldCode, Test.NewCode); } +TEST(SemanticHighlighting, DiffBeyondTheEndOfFile) { + llvm::StringRef OldCode = + R"( + $Class[[A]] + $Variable[[A]] + $Class[[A]] + $Variable[[A]] + )"; + llvm::StringRef NewCode = + R"( + $Class[[A]] // line 1 + $Variable[[A]] // line 2 + )"; + + Annotations OldTest(OldCode); + Annotations NewTest(NewCode); + std::vector<HighlightingToken> OldTokens = getExpectedTokens(OldTest); + std::vector<HighlightingToken> NewTokens = getExpectedTokens(NewTest); + + auto ActualDiff = diffHighlightings(NewTokens, OldTokens); + EXPECT_THAT(ActualDiff, + testing::UnorderedElementsAre( + testing::AllOf(LineNumber(3), EmptyHighlightings()), + testing::AllOf(LineNumber(4), EmptyHighlightings()))); +} + } // namespace } // namespace clangd } // namespace clang |