Move CompletionTarget and OpType for use by plugins
R=scheglov@google.com Review-Url: https://codereview.chromium.org/2924703002 .
This commit is contained in:
@@ -5,13 +5,13 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
export 'package:analysis_server/src/provisional/completion/completion_core.dart'
|
||||
show EMPTY_LIST;
|
||||
|
||||
@@ -9,12 +9,12 @@ import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion, CompletionSuggestionKind;
|
||||
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/contribution_sorter.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/visitor.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
|
||||
part 'common_usage_sorter.g.dart';
|
||||
|
||||
|
||||
@@ -8,12 +8,10 @@ import 'package:analysis_server/src/provisional/completion/completion_core.dart'
|
||||
show CompletionContributor, CompletionRequest;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_plugin.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analysis_server/src/services/completion/completion_core.dart';
|
||||
import 'package:analysis_server/src/services/completion/completion_performance.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/common_usage_sorter.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/contribution_sorter.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
|
||||
import 'package:analyzer/dart/ast/standard_resolution_map.dart';
|
||||
@@ -27,6 +25,8 @@ import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult;
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:analyzer/task/model.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
/**
|
||||
* [DartCompletionManager] determines if a completion request is Dart specific
|
||||
|
||||
+1
-1
@@ -7,9 +7,9 @@ import 'dart:async';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/src/generated/resolver.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
import '../../../protocol_server.dart' show CompletionSuggestion;
|
||||
|
||||
|
||||
+2
-2
@@ -5,13 +5,13 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/standard_resolution_map.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
import '../../../protocol_server.dart'
|
||||
show CompletionSuggestion, CompletionSuggestionKind;
|
||||
|
||||
@@ -6,12 +6,12 @@ import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/token.dart';
|
||||
import 'package:analyzer/dart/ast/visitor.dart';
|
||||
import 'package:analyzer/src/dart/ast/token.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
const ASYNC_STAR = 'async*';
|
||||
const DEFERRED_AS = 'deferred as';
|
||||
|
||||
@@ -9,11 +9,11 @@ import 'package:analysis_server/src/protocol_server.dart'
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
|
||||
show DartCompletionRequestImpl;
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/utilities.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
|
||||
show ElementKind;
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
|
||||
show LocalDeclarationVisitor;
|
||||
|
||||
|
||||
+1
-1
@@ -9,7 +9,6 @@ import 'package:analysis_server/src/protocol_server.dart'
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
|
||||
show DartCompletionRequestImpl;
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/utilities.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
@@ -17,6 +16,7 @@ import 'package:analyzer/dart/ast/standard_resolution_map.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
|
||||
show Element, ElementKind;
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
|
||||
show LocalDeclarationVisitor;
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
|
||||
show createSuggestion, ElementSuggestionBuilder;
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/dart/element/visitor.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
import '../../../protocol_server.dart'
|
||||
show CompletionSuggestion, CompletionSuggestionKind;
|
||||
|
||||
+1
-1
@@ -9,7 +9,6 @@ import 'package:analysis_server/src/protocol_server.dart'
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
|
||||
show DartCompletionRequestImpl;
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/utilities.dart';
|
||||
import 'package:analysis_server/src/services/correction/strings.dart';
|
||||
import 'package:analysis_server/src/utilities/documentation.dart';
|
||||
@@ -21,6 +20,7 @@ import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/src/generated/utilities_dart.dart' show ParameterKind;
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
|
||||
show Element, ElementKind;
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
|
||||
show LocalDeclarationVisitor;
|
||||
|
||||
|
||||
@@ -10,11 +10,11 @@ import 'package:analysis_server/src/protocol_server.dart' as protocol
|
||||
hide CompletionSuggestion, CompletionSuggestionKind;
|
||||
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
|
||||
/**
|
||||
* A completion contributor used to suggest replacing partial identifiers inside
|
||||
|
||||
@@ -9,9 +9,9 @@ import 'package:analysis_server/src/protocol_server.dart'
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
|
||||
show DartCompletionRequestImpl;
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analysis_server/src/services/correction/name_suggestion.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
CompletionSuggestion _createNameSuggestion(String name) {
|
||||
if (name == null || name.isEmpty) {
|
||||
|
||||
@@ -19,7 +19,6 @@ import 'local_constructor_contributor_test.dart' as local_constructor_test;
|
||||
import 'local_library_contributor_test.dart' as local_lib_test;
|
||||
import 'local_reference_contributor_test.dart' as local_ref_test;
|
||||
import 'named_constructor_contributor_test.dart' as named_contributor_test;
|
||||
import 'optype_test.dart' as optype_test;
|
||||
import 'override_contributor_test.dart' as override_contributor_test;
|
||||
import 'static_member_contributor_test.dart' as static_contributor_test;
|
||||
import 'type_member_contributor_test.dart' as type_member_contributor_test;
|
||||
@@ -44,7 +43,6 @@ main() {
|
||||
local_lib_test.main();
|
||||
local_ref_test.main();
|
||||
named_contributor_test.main();
|
||||
optype_test.main();
|
||||
override_contributor_test.main();
|
||||
static_contributor_test.main();
|
||||
type_member_contributor_test.main();
|
||||
|
||||
@@ -4,14 +4,12 @@
|
||||
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import 'completion_target_test.dart' as completion_target_test;
|
||||
import 'dart/test_all.dart' as dart_contributor_tests;
|
||||
import 'statement/statement_completion_test.dart' as statement_completion_test;
|
||||
|
||||
/// Utility for manually running all tests.
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
completion_target_test.main();
|
||||
dart_contributor_tests.main();
|
||||
statement_completion_test.main();
|
||||
}, name: 'completion');
|
||||
|
||||
+28
-28
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
||||
// Copyright (c) 2017, 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.
|
||||
|
||||
@@ -8,33 +8,6 @@ import 'package:analyzer/dart/element/element.dart';
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/src/generated/utilities_dart.dart';
|
||||
|
||||
int _computeArgIndex(AstNode containingNode, Object entity) {
|
||||
var argList = containingNode;
|
||||
if (argList is NamedExpression) {
|
||||
entity = argList;
|
||||
argList = argList.parent;
|
||||
}
|
||||
if (argList is ArgumentList) {
|
||||
NodeList<Expression> args = argList.arguments;
|
||||
for (int index = 0; index < args.length; ++index) {
|
||||
if (entity == args[index]) {
|
||||
return index;
|
||||
}
|
||||
}
|
||||
if (args.isEmpty) {
|
||||
return 0;
|
||||
}
|
||||
if (entity == argList.rightParenthesis) {
|
||||
// Parser ignores trailing commas
|
||||
if (argList.rightParenthesis.previous?.lexeme == ',') {
|
||||
return args.length;
|
||||
}
|
||||
return args.length - 1;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* A CompletionTarget represents an edge in the parse tree which connects an
|
||||
* AST node (the [containingNode] of the completion) to one of its children
|
||||
@@ -340,6 +313,33 @@ class CompletionTarget {
|
||||
return false;
|
||||
}
|
||||
|
||||
static int _computeArgIndex(AstNode containingNode, Object entity) {
|
||||
var argList = containingNode;
|
||||
if (argList is NamedExpression) {
|
||||
entity = argList;
|
||||
argList = argList.parent;
|
||||
}
|
||||
if (argList is ArgumentList) {
|
||||
NodeList<Expression> args = argList.arguments;
|
||||
for (int index = 0; index < args.length; ++index) {
|
||||
if (entity == args[index]) {
|
||||
return index;
|
||||
}
|
||||
}
|
||||
if (args.isEmpty) {
|
||||
return 0;
|
||||
}
|
||||
if (entity == argList.rightParenthesis) {
|
||||
// Parser ignores trailing commas
|
||||
if (argList.rightParenthesis.previous?.lexeme == ',') {
|
||||
return args.length;
|
||||
}
|
||||
return args.length - 1;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the offset is contained in a preceding comment token
|
||||
* and return that token, otherwise return `null`.
|
||||
+8
-4
@@ -1,10 +1,7 @@
|
||||
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
||||
// Copyright (c) 2017, 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:analysis_server/src/protocol_server.dart' hide Element;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/standard_resolution_map.dart';
|
||||
import 'package:analyzer/dart/ast/token.dart';
|
||||
@@ -14,6 +11,9 @@ import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/src/dart/ast/token.dart';
|
||||
import 'package:analyzer/src/dart/element/element.dart';
|
||||
import 'package:analyzer/src/generated/utilities_dart.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
import 'package:analyzer_plugin/utilities/completion/relevance.dart';
|
||||
|
||||
typedef int SuggestionsFilter(DartType dartType, int relevance);
|
||||
|
||||
@@ -287,6 +287,7 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitAssignmentExpression(AssignmentExpression node) {
|
||||
if (identical(entity, node.rightHandSide)) {
|
||||
optype.includeReturnValueSuggestions = true;
|
||||
@@ -365,6 +366,7 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor {
|
||||
optype.suggestKind = CompletionSuggestionKind.IDENTIFIER;
|
||||
}
|
||||
|
||||
@override
|
||||
void visitCompilationUnit(CompilationUnit node) {
|
||||
if (entity is! CommentToken) {
|
||||
optype.includeTypeNameSuggestions = true;
|
||||
@@ -669,6 +671,7 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitLibraryIdentifier(LibraryIdentifier node) {
|
||||
// No suggestions.
|
||||
}
|
||||
@@ -764,6 +767,7 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitParenthesizedExpression(ParenthesizedExpression node) {
|
||||
if (identical(entity, node.expression)) {
|
||||
optype.includeReturnValueSuggestions = true;
|
||||
+3
-3
@@ -1,17 +1,17 @@
|
||||
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
||||
// Copyright (c) 2017, 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 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/src/dart/analysis/driver.dart';
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import '../../abstract_context.dart';
|
||||
import '../../../support/abstract_context.dart';
|
||||
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
+5
-5
@@ -1,17 +1,17 @@
|
||||
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
||||
// Copyright (c) 2017, 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 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart';
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
||||
import 'package:analyzer/src/dart/analysis/driver.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import '../../../abstract_context.dart';
|
||||
import '../../../support/abstract_context.dart';
|
||||
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
@@ -0,0 +1,15 @@
|
||||
// Copyright (c) 2017, 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:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import 'completion_target_test.dart' as completion_target_test;
|
||||
import 'optype_test.dart' as optype_test;
|
||||
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
completion_target_test.main();
|
||||
optype_test.main();
|
||||
}, name: 'completion');
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import 'change_builder/test_all.dart' as change_builder;
|
||||
import 'completion/test_all.dart' as completion;
|
||||
import 'navigation/test_all.dart' as navigation;
|
||||
import 'string_utilities_test.dart' as string_utilities;
|
||||
import 'visitors/test_all.dart' as visitors;
|
||||
@@ -12,6 +13,7 @@ import 'visitors/test_all.dart' as visitors;
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
change_builder.main();
|
||||
completion.main();
|
||||
navigation.main();
|
||||
string_utilities.main();
|
||||
visitors.main();
|
||||
|
||||
Reference in New Issue
Block a user