diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart index 309cbd8d89d..a9414fd4657 100644 --- a/pkg/analysis_server/lib/src/analysis_server.dart +++ b/pkg/analysis_server/lib/src/analysis_server.dart @@ -655,7 +655,7 @@ class AnalysisServerOptions { /// Return `true` if the new relevance computations should be used when /// computing code completion suggestions. - bool useNewRelevance = false; + bool useNewRelevance = true; /// The set of enabled features. FeatureSet featureSet = FeatureSet(); diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart index 24504db1812..6e075f6d56b 100644 --- a/pkg/analysis_server/lib/src/server/driver.dart +++ b/pkg/analysis_server/lib/src/server/driver.dart @@ -827,6 +827,7 @@ class Driver implements ServerStarter { // Temporary flags. // parser.addFlag(USE_NEW_RELEVANCE, + defaultsTo: true, help: 'Use the new relevance computation for code completion.'); return parser; diff --git a/pkg/analysis_server/test/client/completion_driver_test.dart b/pkg/analysis_server/test/client/completion_driver_test.dart index 23114538344..5ee0b8a1e5a 100644 --- a/pkg/analysis_server/test/client/completion_driver_test.dart +++ b/pkg/analysis_server/test/client/completion_driver_test.dart @@ -587,7 +587,6 @@ void main(List args) { .relevance)); } - @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/38796') Future test_project_suggestionRelevance_constructorsAndTypes() async { await addProjectFile('lib/a.dart', r''' class A { } diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart index 35894ebde2a..d9bd0152beb 100644 --- a/pkg/analysis_server/test/domain_completion_test.dart +++ b/pkg/analysis_server/test/domain_completion_test.dart @@ -590,12 +590,15 @@ class B extends A { } Future test_invocation_sdk_relevancy_on() { - addTestFile('main() {Map m; m.^}'); - return getSuggestions().then((_) { - // Assert that the CommonUsageComputer is working - expect(suggestions.any((s) => s.relevance == DART_RELEVANCE_COMMON_USAGE), - isTrue); - }); + if (!server.options.useNewRelevance) { + addTestFile('main() {Map m; m.^}'); + return getSuggestions().then((_) { + // Assert that the CommonUsageComputer is working + expect( + suggestions.any((s) => s.relevance == DART_RELEVANCE_COMMON_USAGE), + isTrue); + }); + } } Future test_invocation_withTrailingStmt() { diff --git a/pkg/analysis_server/test/domain_completion_util.dart b/pkg/analysis_server/test/domain_completion_util.dart index 424b3d01451..81f936fb729 100644 --- a/pkg/analysis_server/test/domain_completion_util.dart +++ b/pkg/analysis_server/test/domain_completion_util.dart @@ -70,7 +70,9 @@ class AbstractCompletionDomainTest extends AbstractAnalysisTest { fail('expected $expectationText, but found\n $completions'); } expect(cs.kind, equals(kind)); - expect(cs.relevance, equals(relevance)); + if (!server.options.useNewRelevance) { + expect(cs.relevance, equals(relevance)); + } expect(cs.selectionOffset, selectionOffset ?? completion.length); expect(cs.selectionLength, equals(0)); expect(cs.isDeprecated, equals(isDeprecated)); diff --git a/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart b/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart index 805b561faa7..8053be54b6d 100644 --- a/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart +++ b/pkg/analysis_server/test/src/domains/completion/get_suggestions_available_test.dart @@ -253,7 +253,57 @@ void f(MyEnum e) { testCode.indexOf(' // ref'), ); - assertJsonText(results.includedSuggestionRelevanceTags, r''' + if (server.options.useNewRelevance) { + assertJsonText(results.includedSuggestionRelevanceTags, r''' +[ + { + "tag": "ElementKind.PREFIX", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.TOP_LEVEL_VARIABLE", + "relevanceBoost": 1 + }, + { + "tag": "ElementKind.FUNCTION", + "relevanceBoost": 2 + }, + { + "tag": "ElementKind.METHOD", + "relevanceBoost": 4 + }, + { + "tag": "ElementKind.ENUM", + "relevanceBoost": 9 + }, + { + "tag": "ElementKind.CLASS", + "relevanceBoost": 28 + }, + { + "tag": "ElementKind.LOCAL_VARIABLE", + "relevanceBoost": 40 + }, + { + "tag": "ElementKind.CONSTRUCTOR", + "relevanceBoost": 53 + }, + { + "tag": "ElementKind.FIELD", + "relevanceBoost": 68 + }, + { + "tag": "ElementKind.PARAMETER", + "relevanceBoost": 100 + }, + { + "tag": "package:test/a.dart::MyEnum", + "relevanceBoost": 250 + } +] +'''); + } else { + assertJsonText(results.includedSuggestionRelevanceTags, r''' [ { "tag": "package:test/a.dart::MyEnum", @@ -261,6 +311,7 @@ void f(MyEnum e) { } ] '''); + } } Future test_relevanceTags_location_argumentList_named() async { @@ -277,7 +328,57 @@ main() { testCode.indexOf('); // ref'), ); - assertJsonText(results.includedSuggestionRelevanceTags, r''' + if (server.options.useNewRelevance) { + assertJsonText(results.includedSuggestionRelevanceTags, r''' +[ + { + "tag": "ElementKind.PREFIX", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.FUNCTION", + "relevanceBoost": 1 + }, + { + "tag": "ElementKind.METHOD", + "relevanceBoost": 1 + }, + { + "tag": "ElementKind.TOP_LEVEL_VARIABLE", + "relevanceBoost": 3 + }, + { + "tag": "ElementKind.ENUM", + "relevanceBoost": 5 + }, + { + "tag": "ElementKind.CLASS", + "relevanceBoost": 20 + }, + { + "tag": "ElementKind.LOCAL_VARIABLE", + "relevanceBoost": 30 + }, + { + "tag": "ElementKind.FIELD", + "relevanceBoost": 41 + }, + { + "tag": "ElementKind.PARAMETER", + "relevanceBoost": 56 + }, + { + "tag": "ElementKind.CONSTRUCTOR", + "relevanceBoost": 100 + }, + { + "tag": "dart:core::String", + "relevanceBoost": 10 + } +] +'''); + } else { + assertJsonText(results.includedSuggestionRelevanceTags, r''' [ { "tag": "dart:core::String", @@ -285,6 +386,7 @@ main() { } ] '''); + } } Future test_relevanceTags_location_argumentList_positional() async { @@ -301,7 +403,65 @@ main() { testCode.indexOf('); // ref'), ); - assertJsonText(results.includedSuggestionRelevanceTags, r''' + if (server.options.useNewRelevance) { + assertJsonText(results.includedSuggestionRelevanceTags, r''' +[ + { + "tag": "ElementKind.MIXIN", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.TYPE_PARAMETER", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.PREFIX", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.ENUM", + "relevanceBoost": 3 + }, + { + "tag": "ElementKind.METHOD", + "relevanceBoost": 4 + }, + { + "tag": "ElementKind.FUNCTION", + "relevanceBoost": 9 + }, + { + "tag": "ElementKind.CLASS", + "relevanceBoost": 13 + }, + { + "tag": "ElementKind.TOP_LEVEL_VARIABLE", + "relevanceBoost": 18 + }, + { + "tag": "ElementKind.CONSTRUCTOR", + "relevanceBoost": 27 + }, + { + "tag": "ElementKind.FIELD", + "relevanceBoost": 42 + }, + { + "tag": "ElementKind.LOCAL_VARIABLE", + "relevanceBoost": 60 + }, + { + "tag": "ElementKind.PARAMETER", + "relevanceBoost": 100 + }, + { + "tag": "dart:core::double", + "relevanceBoost": 10 + } +] +'''); + } else { + assertJsonText(results.includedSuggestionRelevanceTags, r''' [ { "tag": "dart:core::double", @@ -309,6 +469,7 @@ main() { } ] '''); + } } Future test_relevanceTags_location_assignment() async { @@ -324,7 +485,57 @@ main() { testCode.indexOf(' // ref'), ); - assertJsonText(results.includedSuggestionRelevanceTags, r''' + if (server.options.useNewRelevance) { + assertJsonText(results.includedSuggestionRelevanceTags, r''' +[ + { + "tag": "ElementKind.PREFIX", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.TOP_LEVEL_VARIABLE", + "relevanceBoost": 1 + }, + { + "tag": "ElementKind.FUNCTION", + "relevanceBoost": 2 + }, + { + "tag": "ElementKind.METHOD", + "relevanceBoost": 4 + }, + { + "tag": "ElementKind.ENUM", + "relevanceBoost": 9 + }, + { + "tag": "ElementKind.CLASS", + "relevanceBoost": 28 + }, + { + "tag": "ElementKind.LOCAL_VARIABLE", + "relevanceBoost": 40 + }, + { + "tag": "ElementKind.CONSTRUCTOR", + "relevanceBoost": 53 + }, + { + "tag": "ElementKind.FIELD", + "relevanceBoost": 68 + }, + { + "tag": "ElementKind.PARAMETER", + "relevanceBoost": 100 + }, + { + "tag": "dart:core::int", + "relevanceBoost": 10 + } +] +'''); + } else { + assertJsonText(results.includedSuggestionRelevanceTags, r''' [ { "tag": "dart:core::int", @@ -332,6 +543,7 @@ main() { } ] '''); + } } Future test_relevanceTags_location_initializer() async { @@ -344,7 +556,65 @@ int v = // ref; testCode.indexOf(' // ref'), ); - assertJsonText(results.includedSuggestionRelevanceTags, r''' + if (server.options.useNewRelevance) { + assertJsonText(results.includedSuggestionRelevanceTags, r''' +[ + { + "tag": "ElementKind.MIXIN", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.TYPE_PARAMETER", + "relevanceBoost": 0 + }, + { + "tag": "ElementKind.PREFIX", + "relevanceBoost": 1 + }, + { + "tag": "ElementKind.ENUM", + "relevanceBoost": 1 + }, + { + "tag": "ElementKind.METHOD", + "relevanceBoost": 4 + }, + { + "tag": "ElementKind.TOP_LEVEL_VARIABLE", + "relevanceBoost": 6 + }, + { + "tag": "ElementKind.FUNCTION", + "relevanceBoost": 16 + }, + { + "tag": "ElementKind.PARAMETER", + "relevanceBoost": 26 + }, + { + "tag": "ElementKind.FIELD", + "relevanceBoost": 35 + }, + { + "tag": "ElementKind.CLASS", + "relevanceBoost": 56 + }, + { + "tag": "ElementKind.LOCAL_VARIABLE", + "relevanceBoost": 68 + }, + { + "tag": "ElementKind.CONSTRUCTOR", + "relevanceBoost": 100 + }, + { + "tag": "dart:core::int", + "relevanceBoost": 10 + } +] +'''); + } else { + assertJsonText(results.includedSuggestionRelevanceTags, r''' [ { "tag": "dart:core::int", @@ -352,6 +622,7 @@ int v = // ref; } ] '''); + } } Future test_relevanceTags_location_listLiteral() async {