usaxena95 updated this revision to Diff 296159. usaxena95 edited the summary of this revision. usaxena95 added a comment.
Updated the references to old signals. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D88745/new/ https://reviews.llvm.org/D88745 Files: clang-tools-extra/clangd/Quality.cpp clang-tools-extra/clangd/Quality.h clang-tools-extra/clangd/benchmarks/CompletionModel/DecisionForestBenchmark.cpp clang-tools-extra/clangd/quality/model/features.json clang-tools-extra/clangd/quality/model/forest.json
Index: clang-tools-extra/clangd/quality/model/features.json =================================================================== --- clang-tools-extra/clangd/quality/model/features.json +++ clang-tools-extra/clangd/quality/model/features.json @@ -20,7 +20,7 @@ "kind": "NUMBER" }, { - "name": "IsNameInContext", + "name": "NumNameInContext", "kind": "NUMBER" }, { @@ -63,6 +63,10 @@ "name": "TypeMatchesPreferred", "kind": "NUMBER" }, + { + "name": "SemaPriority", + "kind": "NUMBER" + }, { "name": "SymbolCategory", "kind": "ENUM", @@ -81,4 +85,4 @@ "type": "clang::clangd::SymbolRelevanceSignals::AccessibleScope", "header": "Quality.h" } -] \ No newline at end of file +] Index: clang-tools-extra/clangd/benchmarks/CompletionModel/DecisionForestBenchmark.cpp =================================================================== --- clang-tools-extra/clangd/benchmarks/CompletionModel/DecisionForestBenchmark.cpp +++ clang-tools-extra/clangd/benchmarks/CompletionModel/DecisionForestBenchmark.cpp @@ -39,7 +39,7 @@ E.setNumReferences(RandInt(10000)); // Can be large integer. E.setSymbolCategory(RandInt(10)); // 10 Symbol Category. - E.setIsNameInContext(FlipCoin(0.5)); // Boolean. + E.setNumNameInContext(RandInt(5)); // Boolean. E.setIsForbidden(FlipCoin(0.1)); // Boolean. E.setIsInBaseClass(FlipCoin(0.3)); // Boolean. E.setFileProximityDistance( @@ -57,6 +57,7 @@ E.setHadSymbolType(FlipCoin(0.6)); // Boolean. E.setTypeMatchesPreferred(FlipCoin(0.5)); // Boolean. E.setFilterLength(RandInt(15)); + E.setSemaPriority(RandInt(100)); Examples.push_back(E); } return Examples; Index: clang-tools-extra/clangd/Quality.h =================================================================== --- clang-tools-extra/clangd/Quality.h +++ clang-tools-extra/clangd/Quality.h @@ -140,11 +140,14 @@ /// CompletionPrefix. unsigned FilterLength = 0; + /// Priority of the completion item as computed by Sema. + unsigned SemaPriority = 0; + /// Set of derived signals computed by calculateDerivedSignals(). Must not be /// set explicitly. struct DerivedSignals { - /// Whether Name contains some word from context. - bool NameMatchesContext = false; + /// Number of words in Context that matches Name. + unsigned NumNameInContext = 0; /// Min distance between SymbolURI and all the headers included by the TU. unsigned FileProximityDistance = FileDistance::Unreachable; /// Min distance between SymbolScope and all the available scopes. Index: clang-tools-extra/clangd/Quality.cpp =================================================================== --- clang-tools-extra/clangd/Quality.cpp +++ clang-tools-extra/clangd/Quality.cpp @@ -300,6 +300,8 @@ SemaCCResult.Availability == CXAvailability_NotAccessible) Forbidden = true; + SemaPriority = SemaCCResult.Priority; + if (SemaCCResult.Declaration) { SemaSaysInScope = true; // We boost things that have decls in the main file. We give a fixed score @@ -352,7 +354,12 @@ SymbolRelevanceSignals::DerivedSignals SymbolRelevanceSignals::calculateDerivedSignals() const { DerivedSignals Derived; - Derived.NameMatchesContext = wordMatching(Name, ContextWords).hasValue(); + int NumNameInContext = 0; + if (ContextWords) + for (const auto &Word : ContextWords->keys()) + if (Name.contains_lower(Word)) + NumNameInContext++; + Derived.NumNameInContext = NumNameInContext; Derived.FileProximityDistance = !FileProximityMatch || SymbolURI.empty() ? FileDistance::Unreachable : FileProximityMatch->distance(SymbolURI); @@ -387,7 +394,7 @@ ? 2.0 : scopeProximityScore(Derived.ScopeProximityDistance); - if (Derived.NameMatchesContext) + if (Derived.NumNameInContext > 0) Score *= 1.5; // Symbols like local variables may only be referenced within their scope. @@ -498,7 +505,7 @@ SymbolRelevanceSignals::DerivedSignals Derived = Relevance.calculateDerivedSignals(); - E.setIsNameInContext(Derived.NameMatchesContext); + E.setNumNameInContext(Derived.NumNameInContext); E.setIsForbidden(Relevance.Forbidden); E.setIsInBaseClass(Relevance.InBaseClass); E.setFileProximityDistance(Derived.FileProximityDistance); @@ -512,6 +519,7 @@ E.setHadSymbolType(Relevance.HadSymbolType); E.setTypeMatchesPreferred(Relevance.TypeMatchesPreferred); E.setFilterLength(Relevance.FilterLength); + E.setSemaPriority(Relevance.SemaPriority); return Evaluate(E); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits