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

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

Issue 637703002: add suggestions for variable declaration assignment RHS (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 6 years, 2 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 00eed4b450c40e83a7af7651c3acfdf5877d1a79..d1861478bb2052dc2389f1a8ab93a52432ba2588 100644
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart
@@ -109,18 +109,6 @@ class AbstractCompletionTest extends AbstractContextTest {
return cs;
}
- CompletionSuggestion assertSuggestConstructor(String name,
- [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
- CompletionSuggestion cs =
- assertSuggest(CompletionSuggestionKind.CONSTRUCTOR, name, relevance);
- protocol.Element element = cs.element;
- expect(element, isNotNull);
- expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR));
- expect(element.name, equals(name));
- expect(element.returnType, isNull);
- return cs;
- }
-
CompletionSuggestion assertSuggestFunction(String name, String returnType,
bool isDeprecated, [CompletionRelevance relevance =
CompletionRelevance.DEFAULT]) {
@@ -210,6 +198,23 @@ class AbstractCompletionTest extends AbstractContextTest {
return cs;
}
+ CompletionSuggestion assertSuggestNamedConstructor(String name,
+ String returnType, [CompletionRelevance relevance =
+ CompletionRelevance.DEFAULT]) {
+ if (computer is InvocationComputer) {
+ CompletionSuggestion cs =
+ assertSuggest(CompletionSuggestionKind.CONSTRUCTOR, name, relevance);
+ protocol.Element element = cs.element;
+ expect(element, isNotNull);
+ expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR));
+ expect(element.name, equals(name));
+ expect(element.returnType, equals(returnType));
+ return cs;
+ } else {
+ return null;
+ }
+ }
+
CompletionSuggestion assertSuggestParameter(String name, String returnType,
[CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
CompletionSuggestion cs =
@@ -507,6 +512,76 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
});
}
+ test_ConstructorName_importedClass() {
+ // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName
+ // InstanceCreationExpression
+ addSource('/testB.dart', '''
+ lib B;
+ int T1;
+ F1() { }
+ class X {X.c(); X._d(); z() {}}''');
+ addTestSource('''
+ import "/testB.dart";
+ var m;
+ main() {new X.^}''');
+ computeFast();
+ return computeFull(true).then((_) {
+ assertSuggestNamedConstructor('c', 'X');
+ assertNotSuggested('F1');
+ assertNotSuggested('T1');
+ assertNotSuggested('_d');
+ assertNotSuggested('z');
+ assertNotSuggested('m');
+ });
+ }
+
+ test_ConstructorName_localClass() {
+ // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName
+ // InstanceCreationExpression
+ addTestSource('''
+ int T1;
+ F1() { }
+ class X {X.c(); X._d(); z() {}}
+ main() {new X.^}''');
+ computeFast();
+ return computeFull(true).then((_) {
+ assertSuggestNamedConstructor('c', 'X');
+ assertSuggestNamedConstructor('_d', 'X');
+ assertNotSuggested('F1');
+ assertNotSuggested('T1');
+ assertNotSuggested('z');
+ assertNotSuggested('m');
+ });
+ }
+
+ test_InstanceCreationExpression_imported() {
+ // SimpleIdentifier TypeName ConstructorName InstanceCreationExpression
+ addSource('/testA.dart', '''
+ int T1;
+ F1() { }
+ class A {int x;}''');
+ addTestSource('''
+ import "/testA.dart";
+ int T2;
+ F2() { }
+ class B {int x;}
+ class C {foo(){var f; {var x;} new ^}}''');
+ computeFast();
+ return computeFull(true).then((_) {
+ assertSuggestImportedClass('Object');
+ assertSuggestImportedClass('A');
+ assertSuggestLocalClass('B');
+ assertSuggestLocalClass('C');
+ assertNotSuggested('f');
+ assertNotSuggested('x');
+ assertNotSuggested('foo');
+ assertNotSuggested('F1');
+ assertNotSuggested('F2');
+ assertNotSuggested('T1');
+ assertNotSuggested('T2');
+ });
+ }
+
test_IsExpression_type() {
// SimpleIdentifier TypeName IsExpression IfStatement
addSource('/testB.dart', '''
@@ -526,4 +601,70 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest {
assertNotSuggested('foo');
});
}
+
+ test_VariableDeclaration_name() {
+ // SimpleIdentifier VariableDeclaration VariableDeclarationList
+ // VariableDeclarationStatement Block
+ addSource('/testB.dart', '''
+ lib B;
+ foo() { }
+ class _B { }
+ class X {X.c(); X._d(); z() {}}''');
+ addTestSource('''
+ import "/testB.dart";
+ class Y {Y.c(); Y._d(); z() {}}
+ main() {var ^}''');
+ computeFast();
+ return computeFull(true).then((_) {
+ assertNoSuggestions();
+ });
+ }
+
+ test_VariableDeclarationStatement_RHS() {
+ // SimpleIdentifier VariableDeclaration VariableDeclarationList
+ // VariableDeclarationStatement
+ addSource('/testB.dart', '''
+ lib B;
+ foo() { }
+ class _B { }
+ class X {X.c(); X._d(); z() {}}''');
+ addTestSource('''
+ import "/testB.dart";
+ class Y {Y.c(); Y._d(); z() {}}
+ class C {bar(){var f; {var x;} var e = ^}}''');
+ computeFast();
+ return computeFull(true).then((_) {
+ assertSuggestImportedClass('X');
+ assertNotSuggested('_B');
+ assertSuggestLocalClass('Y');
+ assertSuggestLocalClass('C');
+ assertSuggestLocalVariable('f', null);
+ assertNotSuggested('x');
+ assertNotSuggested('e');
+ });
+ }
+
+ test_VariableDeclarationStatement_RHS_missing_semicolon() {
+ // VariableDeclaration VariableDeclarationList
+ // VariableDeclarationStatement
+ addSource('/testB.dart', '''
+ lib B;
+ foo() { }
+ class _B { }
+ class X {X.c(); X._d(); z() {}}''');
+ addTestSource('''
+ import "/testB.dart";
+ class Y {Y.c(); Y._d(); z() {}}
+ class C {bar(){var f; {var x;} var e = ^ var g}}''');
+ computeFast();
+ return computeFull(true).then((_) {
+ assertSuggestImportedClass('X');
+ assertNotSuggested('_B');
+ assertSuggestLocalClass('Y');
+ assertSuggestLocalClass('C');
+ assertSuggestLocalVariable('f', null);
+ assertNotSuggested('x');
+ assertNotSuggested('e');
+ });
+ }
}

Powered by Google App Engine
This is Rietveld 408576698