Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1588)

Unified Diff: pkg/analysis_server/test/services/completion/completion_test_util.dart

Issue 838053003: suggest fields rather than synthetic getters (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/test/services/completion/completion_test_util.dart
diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart
index 2adf4a708c14a73e5a11c8d0c8e9313b30c8ce44..ee0828bd28f5cbc1812adee0ef716709e0f6fdc9 100644
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart
@@ -190,6 +190,30 @@ abstract class AbstractCompletionTest extends AbstractContextTest {
return cs;
}
+ CompletionSuggestion assertSuggestField(String name,
+ {CompletionRelevance relevance: CompletionRelevance.DEFAULT,
+ CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION,
+ bool isDeprecated: false}) {
+ CompletionSuggestion cs = assertSuggest(
+ name,
+ csKind: kind,
+ relevance: relevance,
+ elemKind: protocol.ElementKind.FIELD,
+ isDeprecated: isDeprecated);
+ expect(cs.returnType, isNull);
+ protocol.Element element = cs.element;
+ expect(element, isNotNull);
+ expect(element.kind, equals(protocol.ElementKind.FIELD));
+ expect(element.name, equals(name));
+ expect(element.parameters, isNull);
+ // TODO (danrubel) return type should be null and there should be
+ // something that represents the type of the field
+ if (element.returnType != null) {
+ expect(element.returnType, 'dynamic');
+ }
+ return cs;
+ }
+
CompletionSuggestion assertSuggestFunction(String name, String returnType,
bool isDeprecated, [CompletionRelevance relevance = CompletionRelevance.DEFAULT,
CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) {
@@ -586,6 +610,15 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
}
}
+ CompletionSuggestion assertSuggestImportedField(String name,
+ [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
+ if (computer is ImportedComputer) {
+ return assertSuggestField(name, relevance: relevance);
+ } else {
+ return assertNotSuggested(name);
+ }
+ }
+
CompletionSuggestion assertSuggestImportedFunction(String name,
String returnType, [bool isDeprecated = false, CompletionRelevance relevance =
CompletionRelevance.DEFAULT, CompletionSuggestionKind kind =
@@ -638,6 +671,15 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
}
}
+ CompletionSuggestion assertSuggestImportedSetter(String name,
+ [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
+ if (computer is ImportedComputer) {
+ return assertSuggestSetter(name, relevance);
+ } else {
+ return assertNotSuggested(name);
+ }
+ }
+
CompletionSuggestion assertSuggestImportedTopLevelVar(String name,
String returnType, [CompletionRelevance relevance = CompletionRelevance.DEFAULT,
CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) {
@@ -718,6 +760,15 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
}
}
+ CompletionSuggestion assertSuggestLocalField(String name,
+ [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
+ if (computer is LocalComputer) {
+ return assertSuggestField(name, relevance: relevance);
+ } else {
+ return assertNotSuggested(name);
+ }
+ }
+
CompletionSuggestion assertSuggestLocalFunction(String name,
String returnType, [bool isDeprecated = false, CompletionRelevance relevance =
CompletionRelevance.DEFAULT]) {
@@ -1245,19 +1296,21 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
// Block BlockFunctionBody MethodDeclaration ClassDeclaration
addSource('/testB.dart', '''
lib B;
- class F { var f1; f2() { } }
+ class F { var f1; f2() { } get f3 => 0; set f4(fx) { } }
class E extends F { var e1; e2() { } }
- class I { int i1; i2() { } }
+ class I { int i1; i2() { } get e1; }
class M { var m1; int m2() { } }''');
addTestSource('''
import "/testB.dart";
class A extends E implements I with M {a() {^}}''');
computeFast();
return computeFull((bool result) {
- assertSuggestImportedGetter('e1', null);
- assertSuggestImportedGetter('f1', null);
- assertSuggestImportedGetter('i1', 'int');
- assertSuggestImportedGetter('m1', null);
+ assertSuggestImportedField('e1');
+ assertSuggestImportedField('f1');
+ assertSuggestImportedField('i1');
+ assertSuggestImportedField('m1');
+ assertSuggestImportedGetter('f3', null);
+ assertSuggestImportedSetter('f4');
//TODO (danrubel) include declared type in suggestion
assertSuggestImportedMethod('e2', null, null);
assertSuggestImportedMethod('f2', null, null);
@@ -1270,17 +1323,19 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
test_Block_inherited_local() {
// Block BlockFunctionBody MethodDeclaration ClassDeclaration
addTestSource('''
- class F { var f1; f2() { } }
+ class F { var f1; f2() { } get f3 => 0; set f4(fx) { } }
class E extends F { var e1; e2() { } }
class I { int i1; i2() { } }
class M { var m1; int m2() { } }
class A extends E implements I with M {a() {^}}''');
computeFast();
return computeFull((bool result) {
- assertSuggestLocalGetter('e1', null);
- assertSuggestLocalGetter('f1', null);
- assertSuggestLocalGetter('i1', 'int');
- assertSuggestLocalGetter('m1', null);
+ assertSuggestLocalField('e1');
+ assertSuggestLocalField('f1');
+ assertSuggestLocalField('i1');
+ assertSuggestLocalField('m1');
+ assertSuggestLocalGetter('f3', null);
+ assertSuggestLocalSetter('f4');
assertSuggestLocalMethod('e2', 'E', null);
assertSuggestLocalMethod('f2', 'F', null);
assertSuggestLocalMethod('i2', 'I', null);
@@ -1490,8 +1545,8 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
class A {var b; X _c; foo() {A a; if (^) something}}''');
computeFast();
return computeFull((bool result) {
- assertSuggestLocalGetter('b', null);
- assertSuggestLocalGetter('_c', 'X');
+ assertSuggestLocalField('b');
+ assertSuggestLocalField('_c');
assertSuggestImportedClass('Object');
assertSuggestLocalClass('A');
assertNotSuggested('==');
@@ -1993,13 +2048,13 @@ abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
expect(methodA.element.isPrivate, isTrue);
}
CompletionSuggestion getterF =
- assertSuggestLocalGetter('f', 'X', CompletionRelevance.LOW);
+ assertSuggestLocalField('f', CompletionRelevance.LOW);
if (getterF != null) {
expect(getterF.element.isDeprecated, isTrue);
expect(getterF.element.isPrivate, isFalse);
expect(getterF.element.parameters, isNull);
}
- CompletionSuggestion getterG = assertSuggestLocalGetter('_g', null);
+ CompletionSuggestion getterG = assertSuggestLocalField('_g');
if (getterG != null) {
expect(getterG.element.isDeprecated, isFalse);
expect(getterG.element.isPrivate, isTrue);

Powered by Google App Engine
This is Rietveld 408576698