kadircet added inline comments.
================ Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:382 + + // For the inner element of a nested template instantiation with no space + // between the '>' characters, TemplateSpecializationLocInfo::RAngleLoc has ---------------- i am actually having a hard time following the logic here. it feels like what you really want is map `>` back to its file location, possibly to a `>>` token, and deal with second case specially. so maybe something like: ``` // RLoc might be pointing at a virtual buffer when it's part of a `>>` token. RLoc = SM.getFileLoc(RLoc); // Make sure token is part of the main file. RLoc = getHighlightableSpellingToken(RLoc); if(!RLoc.isValid()) return; const auto *RTok = TB.spelledTokenAt(RLoc); // Handle `>>`. RLoc is always pointing at the right location, just change // the end to be offset by 1. // We'll either point at the beginning of `>>`, hence get a proper spelled // or point in the middle of `>>` hence get no spelled tok. if (!RTok || RTok->kind() == tok::greatergreater) { Position Begin = sourceLocToPosition(SourceMgr, RLoc); Position End = sourceLocToPosition(SourceMgr, RLoc.getLocWithOffset(1)); addToken(*LRange, HighlightingKind::Bracket); addToken({Begin, End}, HighlightingKind::Bracket); return; } // Easy case, we have the `>` token directly available. if (RTok->kind() == tok::greater) { if (auto RRange = getRangeForSourceLocation(RLoc)) { addToken(*LRange, HighlightingKind::Bracket); addToken(*RRange, HighlightingKind::Bracket); } return; } ``` This should also make sure you're handling line continuations properly. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D139926/new/ https://reviews.llvm.org/D139926 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits