New 'non-type member completions' relevance tests in the analysis server.

This test includes: a failing type parameter test, as well as a common completion bug with Flutter widget construction, this test shows that the new relavance logic does the right thing.

When we add additional categories in completion metrics to split apart this group of completions, this test may be split as well, this name seemed appropriate for the time being.

Change-Id: I67638a121528be5e9a20bebc022a576282db1867
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151631
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
This commit is contained in:
Jaime Wren 2020-06-18 00:03:31 +00:00 committed by commit-bot@chromium.org
parent 60bb0d3a41
commit ae6a489dfb
2 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,51 @@
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'completion_relevance.dart';
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(NonTypeMemberRelevanceTest);
});
}
@reflectiveTest
class NonTypeMemberRelevanceTest extends CompletionRelevanceTest {
Future<void> test_contextType_constructorInvocation_before_type() async {
await addTestFile('''
class StrWrap {
String string;
StrWrap(this.string);
}
void foo(StrWrap s) {}
void bar() {
foo(^);
}
''');
var constructorInvocationSuggestion =
suggestionWith(completion: 'StrWrap', element: ElementKind.CONSTRUCTOR);
var typeSuggestion =
suggestionWith(completion: 'StrWrap', element: ElementKind.CLASS);
assertOrder([constructorInvocationSuggestion, typeSuggestion]);
}
@failingTest
Future<void> test_typeParameters() async {
await addTestFile('''
class Foo{}
void foo<T>(List<T> bar) {
List<^> baz;
}
''');
assertOrder(
[suggestionWith(completion: 'T'), suggestionWith(completion: 'Foo')]);
}
}

View file

@ -8,6 +8,7 @@ import 'bool_assignment_relevance_test.dart' as bool_assignments;
import 'deprecated_member_relevance_test.dart' as deprecated_members;
import 'instance_member_relevance_test.dart' as instance_member_relevance;
import 'named_argument_relevance_test.dart' as named_argument_relevance;
import 'non_type_member_relevance_test.dart' as non_type_member_relevance;
import 'static_member_relevance_test.dart' as static_member_relevance;
void main() {
@ -16,6 +17,7 @@ void main() {
deprecated_members.main();
instance_member_relevance.main();
named_argument_relevance.main();
non_type_member_relevance.main();
static_member_relevance.main();
});
}