diff options
Diffstat (limited to 'clang-tools-extra/clangd/Quality.cpp')
-rw-r--r-- | clang-tools-extra/clangd/Quality.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang-tools-extra/clangd/Quality.cpp b/clang-tools-extra/clangd/Quality.cpp index 0d2175eb00c..6d0c37625af 100644 --- a/clang-tools-extra/clangd/Quality.cpp +++ b/clang-tools-extra/clangd/Quality.cpp @@ -299,6 +299,7 @@ void SymbolRelevanceSignals::merge(const CodeCompletionResult &SemaCCResult) { : 0.6; SemaFileProximityScore = std::max(DeclProximity, SemaFileProximityScore); IsInstanceMember |= isInstanceMember(SemaCCResult.Declaration); + InBaseClass |= SemaCCResult.InBaseClass; } // Declarations are scoped, others (like macros) are assumed global. @@ -372,9 +373,12 @@ float SymbolRelevanceSignals::evaluate() const { if (!IsInstanceMember && (Context == CodeCompletionContext::CCC_DotMemberAccess || Context == CodeCompletionContext::CCC_ArrowMemberAccess)) { - Score *= 0.5; + Score *= 0.2; } + if (InBaseClass) + Score *= 0.5; + // Penalize for FixIts. if (NeedsFixIts) Score *= 0.5; |