Skip to content

Commit cc3e062

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Set higher relevance for exact type and subtype completions.
Exact type get the largest relevance boost, subtypes a smaller boost, and the rest has default relevance for its element kind. [email protected], [email protected] Bug: flutter/flutter-intellij#998 Change-Id: Ibb38caedc314e9cf476de2116aeb61bcec8c8a08 Reviewed-on: https://dart-review.googlesource.com/43263 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent fdaaa87 commit cc3e062

File tree

7 files changed

+157
-100
lines changed

7 files changed

+157
-100
lines changed

pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ main() {
6161
expect(replacementLength, equals(0));
6262
assertHasResult(CompletionSuggestionKind.INVOCATION, 'E');
6363
assertHasResult(CompletionSuggestionKind.INVOCATION, 'E.e1',
64-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
64+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
6565
assertHasResult(CompletionSuggestionKind.INVOCATION, 'E.e2',
66-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
66+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
6767
}
6868

6969
test_PrefixedIdentifier_field() async {

pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2554,6 +2554,35 @@ main() {
25542554
assertNotSuggested('A');
25552555
}
25562556

2557+
test_InstanceCreationExpression_filter() async {
2558+
configurePreviewDart2();
2559+
addSource('/a.dart', '''
2560+
class A {}
2561+
class B extends A {}
2562+
class C implements A {}
2563+
class D {}
2564+
''');
2565+
addTestSource('''
2566+
import 'a.dart';
2567+
2568+
main() {
2569+
A a = new ^
2570+
}
2571+
''');
2572+
await computeSuggestions();
2573+
2574+
assertSuggestConstructor('A',
2575+
elemOffset: -1,
2576+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
2577+
assertSuggestConstructor('B',
2578+
elemOffset: -1,
2579+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
2580+
assertSuggestConstructor('C',
2581+
elemOffset: -1,
2582+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
2583+
assertNotSuggested('D');
2584+
}
2585+
25572586
test_InstanceCreationExpression_imported() async {
25582587
// SimpleIdentifier TypeName ConstructorName InstanceCreationExpression
25592588
addSource('/testA.dart', '''

pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,11 +2330,13 @@ main() {
23302330

23312331
assertSuggestConstructor('A',
23322332
elemOffset: -1,
2333-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2333+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
23342334
assertSuggestConstructor('B',
2335-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2335+
elemOffset: -1,
2336+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
23362337
assertSuggestConstructor('C',
2337-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2338+
elemOffset: -1,
2339+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
23382340
assertNotSuggested('D');
23392341
}
23402342

@@ -2349,11 +2351,13 @@ main() {
23492351

23502352
assertSuggestConstructor('A',
23512353
elemOffset: -1,
2352-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2354+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
23532355
assertSuggestConstructor('B',
2354-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2356+
elemOffset: -1,
2357+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
23552358
assertSuggestConstructor('C',
2356-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2359+
elemOffset: -1,
2360+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
23572361
assertNotSuggested('D');
23582362
}
23592363

@@ -2399,8 +2403,10 @@ main() {
23992403

24002404
assertSuggestConstructor('A',
24012405
elemOffset: -1,
2402-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2403-
assertSuggestConstructor('B', elemOffset: -1);
2406+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
2407+
assertSuggestConstructor('B',
2408+
elemOffset: -1,
2409+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
24042410
assertNotSuggested('C');
24052411
}
24062412

@@ -2415,8 +2421,10 @@ main() {
24152421

24162422
assertSuggestConstructor('A',
24172423
elemOffset: -1,
2418-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2419-
assertSuggestConstructor('B', elemOffset: -1);
2424+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
2425+
assertSuggestConstructor('B',
2426+
elemOffset: -1,
2427+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
24202428
assertNotSuggested('C');
24212429
}
24222430

@@ -2442,11 +2450,13 @@ main() {
24422450

24432451
assertSuggestConstructor('A',
24442452
elemOffset: -1,
2445-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2453+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
24462454
assertSuggestConstructor('B',
2447-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2455+
elemOffset: -1,
2456+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
24482457
assertSuggestConstructor('C',
2449-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2458+
elemOffset: -1,
2459+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
24502460
assertNotSuggested('D');
24512461
}
24522462

@@ -2460,11 +2470,13 @@ main() {
24602470

24612471
assertSuggestConstructor('A',
24622472
elemOffset: -1,
2463-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2473+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
24642474
assertSuggestConstructor('B',
2465-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2475+
elemOffset: -1,
2476+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
24662477
assertSuggestConstructor('C',
2467-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
2478+
elemOffset: -1,
2479+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
24682480
assertNotSuggested('D');
24692481
}
24702482

pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,13 @@ class LocalLibraryContributorTest extends DartCompletionContributorTest {
121121
// A is suggested with a higher relevance
122122
assertSuggestConstructor('A',
123123
elemOffset: -1,
124-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
124+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
125125
assertSuggestConstructor('B',
126-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
126+
elemOffset: -1,
127+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
127128
assertSuggestConstructor('C',
128-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
129+
elemOffset: -1,
130+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
129131
// D is sorted out
130132
assertNotSuggested('D');
131133

@@ -170,11 +172,13 @@ class LocalLibraryContributorTest extends DartCompletionContributorTest {
170172
// A is suggested with a higher relevance
171173
assertSuggestConstructor('A',
172174
elemOffset: -1,
173-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
175+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
174176
assertSuggestConstructor('B',
175-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
177+
elemOffset: -1,
178+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
176179
assertSuggestConstructor('C',
177-
elemOffset: -1, relevance: DART_RELEVANCE_DEFAULT);
180+
elemOffset: -1,
181+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_SUBTYPE);
178182
// D is sorted out
179183
assertNotSuggested('D');
180184

pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -356,10 +356,12 @@ void main() {boo(){} bar(inc: ^);}''');
356356
assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST);
357357
assertSuggestFunction('bar', 'String',
358358
kind: CompletionSuggestionKind.IDENTIFIER,
359-
relevance: DART_RELEVANCE_LOCAL_FUNCTION + DART_RELEVANCE_INCREMENT);
359+
relevance:
360+
DART_RELEVANCE_LOCAL_FUNCTION + DART_RELEVANCE_BOOST_SUBTYPE);
360361
assertSuggestFunction('boo', 'dynamic',
361362
kind: CompletionSuggestionKind.IDENTIFIER,
362-
relevance: DART_RELEVANCE_LOCAL_FUNCTION + DART_RELEVANCE_INCREMENT);
363+
relevance:
364+
DART_RELEVANCE_LOCAL_FUNCTION + DART_RELEVANCE_BOOST_SUBTYPE);
363365
assertNotSuggested('hasLength');
364366
assertNotSuggested('identical');
365367
assertSuggestClass('B', kind: CompletionSuggestionKind.IDENTIFIER);
@@ -469,14 +471,14 @@ void main() {expect(foo: ^)}''');
469471
expect(replacementOffset, completionOffset);
470472
expect(replacementLength, 0);
471473
assertSuggestTopLevelVar('a', 'A',
472-
relevance:
473-
DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE + DART_RELEVANCE_INCREMENT);
474+
relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE +
475+
DART_RELEVANCE_BOOST_TYPE);
474476
assertSuggestTopLevelVar('b', 'B',
475-
relevance:
476-
DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE + DART_RELEVANCE_INCREMENT);
477+
relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE +
478+
DART_RELEVANCE_BOOST_SUBTYPE);
477479
assertSuggestTopLevelVar('c', 'C',
478-
relevance:
479-
DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE + DART_RELEVANCE_INCREMENT);
480+
relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE +
481+
DART_RELEVANCE_BOOST_SUBTYPE);
480482
assertSuggestTopLevelVar('d', 'D',
481483
relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
482484
assertSuggestTopLevelVar('e', 'E',
@@ -801,7 +803,8 @@ main() async {A a; await ^}''');
801803

802804
expect(replacementOffset, completionOffset);
803805
expect(replacementLength, 0);
804-
assertSuggestLocalVariable('a', 'int');
806+
assertSuggestLocalVariable('a', 'int',
807+
relevance: DART_RELEVANCE_LOCAL_VARIABLE + DART_RELEVANCE_BOOST_TYPE);
805808
assertNotSuggested('Object');
806809
assertNotSuggested('b');
807810
assertNotSuggested('==');
@@ -2152,29 +2155,24 @@ main() {^}
21522155
}
21532156

21542157
test_enum_filter() async {
2155-
// SimpleIdentifier NamedExpression ArgumentList
2156-
// InstanceCreationExpression
21572158
addTestSource('''
2158-
enum E { one, two }
2159-
enum F { three, four }
2160-
class A {}
2161-
class B {
2162-
B({E someE});
2163-
}
2164-
A a = new A();
2165-
B b = new B(someE: ^);
2166-
''');
2159+
enum E { one, two }
2160+
enum F { three, four }
2161+
2162+
void foo({E e}) {}
2163+
2164+
main() {
2165+
foo(e: ^);
2166+
}
2167+
''');
21672168
await computeSuggestions();
21682169

2169-
expect(replacementOffset, completionOffset);
2170-
expect(replacementLength, 0);
21712170
assertSuggestEnumConst('E.one',
2172-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2171+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
21732172
assertSuggestEnumConst('E.two',
2174-
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_INCREMENT);
2175-
assertNotSuggested('a');
2176-
assertNotSuggested('F.three');
2177-
assertNotSuggested('F.four');
2173+
relevance: DART_RELEVANCE_DEFAULT + DART_RELEVANCE_BOOST_TYPE);
2174+
assertSuggestEnumConst('F.three');
2175+
assertSuggestEnumConst('F.four');
21782176
}
21792177

21802178
test_ExpressionStatement_identifier() async {

0 commit comments

Comments
 (0)