diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2024-01-24 19:11:41 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2024-01-24 19:11:41 +0000 |
| commit | 4df029cc74e5ec124f14a5682e44999ce4f086df (patch) | |
| tree | fa2e8720472930df97920b4185215c910159f10d /clang/lib/Tooling/Syntax/Tokens.cpp | |
| parent | 950076cd18f3fa9d789b4add9d405898efff09a5 (diff) | |
Diffstat (limited to 'clang/lib/Tooling/Syntax/Tokens.cpp')
| -rw-r--r-- | clang/lib/Tooling/Syntax/Tokens.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Tooling/Syntax/Tokens.cpp b/clang/lib/Tooling/Syntax/Tokens.cpp index 2f28b9cf286a..8d32c45a4a70 100644 --- a/clang/lib/Tooling/Syntax/Tokens.cpp +++ b/clang/lib/Tooling/Syntax/Tokens.cpp @@ -401,6 +401,12 @@ std::string TokenBuffer::Mapping::str() const { std::optional<llvm::ArrayRef<syntax::Token>> TokenBuffer::spelledForExpanded(llvm::ArrayRef<syntax::Token> Expanded) const { + // In cases of invalid code, AST nodes can have source ranges that include + // the `eof` token. As there's no spelling for this token, exclude it from + // the range. + if (!Expanded.empty() && Expanded.back().kind() == tok::eof) { + Expanded = Expanded.drop_back(); + } // Mapping an empty range is ambiguous in case of empty mappings at either end // of the range, bail out in that case. if (Expanded.empty()) |
