From af647841cfa8ba29d083f998a1b779c44f258ac9 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 10 Nov 2021 15:35:26 +0100 Subject: [PATCH] ClangCodeModel: Fix erroneous marking of lambda parameter ... as output argument when using clangd. Change-Id: I35ef2da235cb317bb7eb1f08b865ea62c27d3b76 Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 2 ++ src/plugins/clangcodemodel/test/clangdtests.cpp | 2 ++ .../clangcodemodel/test/data/highlighting/highlighting.cpp | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index fddf22e0096..46c85f06cdf 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -2453,6 +2453,8 @@ static void semanticHighlighter(QFutureInterface &future, return true; } + if (it->kind() == "Lambda") + return false; if (it->kind().endsWith("Cast") && it->hasConstType()) return false; if (it->kind() == "Member" && it->arcanaContains("(") diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index 82e63d49835..cc532cfda03 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1250,6 +1250,8 @@ void ClangdTestHighlighting::test_data() << QList{C_LOCAL} << 0; QTest::newRow("simple assignment") << 835 << 5 << 835 << 6 << QList{C_LOCAL} << 0; QTest::newRow("simple return") << 841 << 12 << 841 << 15 << QList{C_LOCAL} << 0; + QTest::newRow("lambda parameter") << 847 << 49 << 847 << 52 + << QList{C_PARAMETER, C_DECLARATION} << 0; } void ClangdTestHighlighting::test() diff --git a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp index 7f8faa1edc0..7f0db946955 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -840,3 +840,9 @@ FooPtrVector returnTest() { FooPtrVector foo; return foo; } + +template inline void useContainer(const Container &, Func) {} +void testConstRefAutoLambdaArgs() +{ + useContainer(FooPtrVector(), [](const auto &arg) {}); +}