nridge created this revision. Herald added subscribers: cfe-commits, usaxena95, kadircet, arphaman, jkorous. Herald added a project: clang. nridge requested review of this revision. Herald added subscribers: MaskRay, ilya-biryukov.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D85500 Files: clang-tools-extra/clangd/SemanticHighlighting.cpp clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp +++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp @@ -515,13 +515,14 @@ $Class[[S]] *$Field[[Next]]; }; $Class[[S]] $Variable[[Global]][2] = {$Class[[S]](), $Class[[S]]()}; + auto [$Variable[[G1]], $Variable[[G2]]] = $Variable[[Global]]; void $Function[[f]]($Class[[S]] $Parameter[[P]]) { int $LocalVariable[[A]][2] = {1,2}; - auto [$Variable[[B1]], $Variable[[B2]]] = $LocalVariable[[A]]; - auto [$Variable[[G1]], $Variable[[G2]]] = $Variable[[Global]]; - $Class[[auto]] [$Variable[[P1]], $Variable[[P2]]] = $Parameter[[P]]; + auto [$LocalVariable[[B1]], $LocalVariable[[B2]]] = $LocalVariable[[A]]; + auto [$LocalVariable[[G1]], $LocalVariable[[G2]]] = $Variable[[Global]]; + $Class[[auto]] [$LocalVariable[[P1]], $LocalVariable[[P2]]] = $Parameter[[P]]; // Highlights references to BindingDecls. - $Variable[[B1]]++; + $LocalVariable[[B1]]++; } )cpp", R"cpp( Index: clang-tools-extra/clangd/SemanticHighlighting.cpp =================================================================== --- clang-tools-extra/clangd/SemanticHighlighting.cpp +++ clang-tools-extra/clangd/SemanticHighlighting.cpp @@ -90,8 +90,10 @@ ? HighlightingKind::StaticField : VD->isLocalVarDecl() ? HighlightingKind::LocalVariable : HighlightingKind::Variable; - if (isa<BindingDecl>(D)) - return HighlightingKind::Variable; + if (auto *BD = dyn_cast<BindingDecl>(D)) + return BD->getDeclContext()->isFunctionOrMethod() + ? HighlightingKind::LocalVariable + : HighlightingKind::Variable; if (isa<FunctionDecl>(D)) return HighlightingKind::Function; if (isa<NamespaceDecl>(D) || isa<NamespaceAliasDecl>(D) ||
Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp +++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp @@ -515,13 +515,14 @@ $Class[[S]] *$Field[[Next]]; }; $Class[[S]] $Variable[[Global]][2] = {$Class[[S]](), $Class[[S]]()}; + auto [$Variable[[G1]], $Variable[[G2]]] = $Variable[[Global]]; void $Function[[f]]($Class[[S]] $Parameter[[P]]) { int $LocalVariable[[A]][2] = {1,2}; - auto [$Variable[[B1]], $Variable[[B2]]] = $LocalVariable[[A]]; - auto [$Variable[[G1]], $Variable[[G2]]] = $Variable[[Global]]; - $Class[[auto]] [$Variable[[P1]], $Variable[[P2]]] = $Parameter[[P]]; + auto [$LocalVariable[[B1]], $LocalVariable[[B2]]] = $LocalVariable[[A]]; + auto [$LocalVariable[[G1]], $LocalVariable[[G2]]] = $Variable[[Global]]; + $Class[[auto]] [$LocalVariable[[P1]], $LocalVariable[[P2]]] = $Parameter[[P]]; // Highlights references to BindingDecls. - $Variable[[B1]]++; + $LocalVariable[[B1]]++; } )cpp", R"cpp( Index: clang-tools-extra/clangd/SemanticHighlighting.cpp =================================================================== --- clang-tools-extra/clangd/SemanticHighlighting.cpp +++ clang-tools-extra/clangd/SemanticHighlighting.cpp @@ -90,8 +90,10 @@ ? HighlightingKind::StaticField : VD->isLocalVarDecl() ? HighlightingKind::LocalVariable : HighlightingKind::Variable; - if (isa<BindingDecl>(D)) - return HighlightingKind::Variable; + if (auto *BD = dyn_cast<BindingDecl>(D)) + return BD->getDeclContext()->isFunctionOrMethod() + ? HighlightingKind::LocalVariable + : HighlightingKind::Variable; if (isa<FunctionDecl>(D)) return HighlightingKind::Function; if (isa<NamespaceDecl>(D) || isa<NamespaceAliasDecl>(D) ||
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits