add class type alias suggestions
BUG=
R=scheglov@google.com
Review URL: https://codereview.chromium.org//689433003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41388 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkg/analysis_server/lib/src/services/completion/local_computer.dart b/pkg/analysis_server/lib/src/services/completion/local_computer.dart
index e2e81af..8e0ba88 100644
--- a/pkg/analysis_server/lib/src/services/completion/local_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/local_computer.dart
@@ -133,11 +133,20 @@
} else if (declaration is TopLevelVariableDeclaration) {
_addTopLevelVarSuggestions(declaration.variables);
} else if (declaration is ClassTypeAlias) {
- _addSuggestion(
+ CompletionSuggestion suggestion = _addSuggestion(
declaration.name,
CompletionSuggestionKind.CLASS_ALIAS,
null,
null);
+ if (suggestion != null) {
+ suggestion.element = _createElement(
+ protocol.ElementKind.CLASS_TYPE_ALIAS,
+ declaration.name,
+ null,
+ NO_RETURN_TYPE,
+ true,
+ _isDeprecated(declaration.metadata));
+ }
} else if (declaration is FunctionTypeAlias) {
CompletionSuggestion suggestion = _addSuggestion(
declaration.name,
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 5514709..54929ec 100644
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart
@@ -112,6 +112,19 @@
return cs;
}
+ CompletionSuggestion assertSuggestClassTypeAlias(String name,
+ [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
+ CompletionSuggestion cs =
+ assertSuggest(CompletionSuggestionKind.CLASS_ALIAS, name, relevance);
+ protocol.Element element = cs.element;
+ expect(element, isNotNull);
+ expect(element.kind, equals(protocol.ElementKind.CLASS_TYPE_ALIAS));
+ expect(element.name, equals(name));
+ expect(element.parameters, isNull);
+ expect(element.returnType, isNull);
+ return cs;
+ }
+
CompletionSuggestion assertSuggestFunction(String name, String returnType,
bool isDeprecated, [CompletionRelevance relevance =
CompletionRelevance.DEFAULT]) {
@@ -553,6 +566,15 @@
}
}
+ CompletionSuggestion assertSuggestLocalClassTypeAlias(String name,
+ [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
+ if (computer is LocalComputer) {
+ return assertSuggestClassTypeAlias(name, relevance);
+ } else {
+ return assertNotSuggested(name);
+ }
+ }
+
CompletionSuggestion assertSuggestLocalFunction(String name,
String returnType, [bool isDeprecated = false, CompletionRelevance relevance =
CompletionRelevance.DEFAULT]) {
@@ -982,6 +1004,7 @@
var T1;
PB F1() => new PB();
typedef PB2 F2(int blat);
+ class Clz = Object with Object;
class PB { }''');
addSource('/testCD.dart', '''
class C { }
@@ -997,6 +1020,7 @@
assertSuggestImportedClass('PB');
assertSuggestImportedTopLevelVar('T1', null);
assertSuggestImportedFunction('F1', 'PB');
+ assertSuggestImportedClass('Clz');
assertSuggestImportedFunctionTypeAlias('F2', null);
assertNotSuggested('C');
assertNotSuggested('D');
@@ -1056,6 +1080,7 @@
addTestSource('''
import "/testA.dart";
typedef int F2(int blat);
+ class Clz = Object with Object;
class C {foo(){O^} void bar() {}}''');
computeFast();
return computeFull(true).then((_) {
@@ -1065,6 +1090,7 @@
assertSuggestLocalMethod('foo', 'C', null);
assertSuggestLocalMethod('bar', 'C', 'void');
assertSuggestLocalFunctionTypeAlias('F2', 'int');
+ assertSuggestLocalClassTypeAlias('Clz');
assertSuggestLocalClass('C');
assertNotSuggested('x');
assertNotSuggested('_B');