mirror of
https://github.com/dart-lang/sdk
synced 2024-10-07 16:19:50 +00:00
Enable the new code completion relevance feature
The new feature will be enabled by default but the option still exists so that users can disable it if they want/need to. Change-Id: I9e001b00b5dfe132a6b7bcfdcacd3143fb24f65c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/156121 Reviewed-by: Jaime Wren <jwren@google.com> Reviewed-by: Devon Carew <devoncarew@google.com>
This commit is contained in:
parent
d5845d255c
commit
15fb170ffb
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -587,7 +587,6 @@ void main(List<String> args) {
|
|||
.relevance));
|
||||
}
|
||||
|
||||
@FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/38796')
|
||||
Future<void> test_project_suggestionRelevance_constructorsAndTypes() async {
|
||||
await addProjectFile('lib/a.dart', r'''
|
||||
class A { }
|
||||
|
|
|
@ -590,12 +590,15 @@ class B extends A {
|
|||
}
|
||||
|
||||
Future<void> 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<void> test_invocation_withTrailingStmt() {
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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<void> 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<void> 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<void> 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<void> 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<void> test_relevanceTags_location_listLiteral() async {
|
||||
|
|
Loading…
Reference in a new issue