Index: pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart |
diff --git a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart |
index 5117855f25bcc0b45b10da45d078d7c4ebe8e415..573dc4bd68300402d7a44af87aced3bddba66ce0 100644 |
--- a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart |
+++ b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart |
@@ -7,97 +7,19 @@ library services.completion.suggestion.builder; |
import 'dart:async'; |
import 'dart:collection'; |
-import 'package:analysis_server/src/protocol_server.dart' as protocol; |
import 'package:analysis_server/src/protocol_server.dart' |
hide Element, ElementKind; |
+import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart' |
+ show createSuggestion; |
import 'package:analysis_server/src/services/completion/dart_completion_manager.dart'; |
import 'package:analyzer/src/generated/ast.dart'; |
import 'package:analyzer/src/generated/element.dart'; |
import 'package:analyzer/src/generated/engine.dart' as engine; |
-import 'package:analyzer/src/generated/source.dart'; |
-import 'package:analyzer/src/generated/utilities_dart.dart'; |
-import 'package:path/path.dart' as path; |
-const String DYNAMIC = 'dynamic'; |
+export 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart' |
+ show createSuggestion; |
-/** |
- * Return a suggestion based upon the given element |
- * or `null` if a suggestion is not appropriate for the given element. |
- * If the suggestion is not currently in scope, then specify |
- * importForSource as the source to which an import should be added. |
- */ |
-CompletionSuggestion createSuggestion(Element element, |
- {String completion, |
- CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
- int relevance: DART_RELEVANCE_DEFAULT, |
- Source importForSource}) { |
- if (element is ExecutableElement && element.isOperator) { |
- // Do not include operators in suggestions |
- return null; |
- } |
- if (completion == null) { |
- completion = element.displayName; |
- } |
- bool isDeprecated = element.isDeprecated; |
- CompletionSuggestion suggestion = new CompletionSuggestion( |
- kind, |
- isDeprecated ? DART_RELEVANCE_LOW : relevance, |
- completion, |
- completion.length, |
- 0, |
- isDeprecated, |
- false); |
- suggestion.element = protocol.convertElement(element); |
- Element enclosingElement = element.enclosingElement; |
- if (enclosingElement is ClassElement) { |
- suggestion.declaringType = enclosingElement.displayName; |
- } |
- suggestion.returnType = getReturnTypeString(element); |
- if (element is ExecutableElement && element is! PropertyAccessorElement) { |
- suggestion.parameterNames = element.parameters |
- .map((ParameterElement parameter) => parameter.name) |
- .toList(); |
- suggestion.parameterTypes = element.parameters |
- .map((ParameterElement parameter) => parameter.type.displayName) |
- .toList(); |
- suggestion.requiredParameterCount = element.parameters |
- .where((ParameterElement parameter) => |
- parameter.parameterKind == ParameterKind.REQUIRED) |
- .length; |
- suggestion.hasNamedParameters = element.parameters.any( |
- (ParameterElement parameter) => |
- parameter.parameterKind == ParameterKind.NAMED); |
- } |
- if (importForSource != null) { |
- String srcPath = path.dirname(importForSource.fullName); |
- LibraryElement libElem = element.library; |
- if (libElem != null) { |
- Source libSource = libElem.source; |
- if (libSource != null) { |
- UriKind uriKind = libSource.uriKind; |
- if (uriKind == UriKind.DART_URI) { |
- suggestion.importUri = libSource.uri.toString(); |
- } else if (uriKind == UriKind.PACKAGE_URI) { |
- suggestion.importUri = libSource.uri.toString(); |
- } else if (uriKind == UriKind.FILE_URI && |
- element.source.uriKind == UriKind.FILE_URI) { |
- try { |
- suggestion.importUri = |
- path.relative(libSource.fullName, from: srcPath); |
- } catch (_) { |
- // ignored |
- } |
- } |
- } |
- } |
- if (suggestion.importUri == null) { |
- // Do not include out of scope suggestions |
- // for which we cannot determine an import |
- return null; |
- } |
- } |
- return suggestion; |
-} |
+const String DYNAMIC = 'dynamic'; |
/** |
* Call the given function with each non-null non-empty inherited type name |