From cf902649713ed2fd584e5aca89328c4f99ca0223 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 22 Feb 2022 15:27:47 +0100 Subject: ClangCodeModel: Fix more false output arguments with clangd For some reason, we never checked the actual matching AST node for const-ness. Change-Id: Icb58ba169d82e1ec02c9ff8d17f0170f0a78f99d Reviewed-by: Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 2 ++ src/plugins/clangcodemodel/test/clangdtests.cpp | 4 ++++ .../clangcodemodel/test/data/highlighting/highlighting.cpp | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index d0a54042df..50bd7ee24a 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -2675,6 +2675,8 @@ static void semanticHighlighter(QFutureInterface &future, || path.rbegin()->kind() == "CXXConstruct")) { return false; } + if (path.rbegin()->hasConstType()) + return false; for (auto it = path.rbegin() + 1; it != path.rend(); ++it) { if (it->kind() == "Call" || it->kind() == "CXXConstruct" || it->kind() == "MemberInitializer") { diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index 6efddf7c20..98e720ba25 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1298,6 +1298,10 @@ void ClangdTestHighlighting::test_data() QTest::newRow("operator<<") << 934 << 10 << 934 << 14 << QList{C_GLOBAL} << 0; QTest::newRow("operator>>") << 936 << 10 << 936 << 13 << QList{C_GLOBAL} << 0; QTest::newRow("operator>>") << 936 << 17 << 936 << 18 << QList{C_LOCAL} << 0; + QTest::newRow("input arg from passed object") << 945 << 17 << 945 << 18 + << QList{C_FIELD} << 0; + QTest::newRow("output arg") << 945 << 20 << 945 << 23 + << QList{C_LOCAL, C_OUTPUT_ARGUMENT} << 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 40a4ef23b4..6230e7f039 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -935,3 +935,12 @@ void outputOperator() int i; std::cin >> i; } + +template +void transform(const From &from, To &&to, Op op) {} +struct WithVector { std::vector v; }; +void inputsAndOutputsFromObject(const WithVector &s) +{ + std::vector out; + transform(s.v, out, [] {}); +} -- cgit v1.2.3