Migrate the remaining files in server's tools directory
Change-Id: I8388cde7fc9f7904324b41a3fff31cec88e42a6c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/390804 Commit-Queue: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
committed by
Commit Queue
parent
6a9a4f0d0c
commit
83dc895d18
@@ -1492,6 +1492,7 @@ test/verify_error_fix_status_test.dart
|
||||
test/verify_no_utf8_encode_test.dart
|
||||
test/verify_sorted_test.dart
|
||||
test/verify_tests_test.dart
|
||||
tool/bulk_fix/parse_utils.dart
|
||||
tool/bulk_fix/supported_diagnostics.dart
|
||||
tool/bulk_fix/supported_lints.dart
|
||||
tool/code_completion/benchmark/flutter.dart
|
||||
@@ -1504,6 +1505,11 @@ tool/code_completion/corpus.dart
|
||||
tool/code_completion/implicit_type_declarations.dart
|
||||
tool/code_completion/metrics_util.dart
|
||||
tool/code_completion/output_utilities.dart
|
||||
tool/code_completion/completion_metrics.dart
|
||||
tool/code_completion/flutter_metrics.dart
|
||||
tool/code_completion/relevance_metrics.dart
|
||||
tool/code_completion/relevance_table_generator.dart
|
||||
tool/code_completion/visitors.dart
|
||||
tool/codebase/failing_tests.dart
|
||||
tool/generate_testing_package.dart
|
||||
tool/instrumentation/log/log.dart
|
||||
|
||||
@@ -29,10 +29,10 @@ class BulkFixDetails {
|
||||
.getResolvedUnit(file.absolute.path) as ResolvedUnitResult;
|
||||
for (var classDecl
|
||||
in resolvedFile.unit.declarations.whereType<ClassDeclaration>()) {
|
||||
var classElement = classDecl.declaredElement;
|
||||
var classElement = classDecl.declaredFragment?.element;
|
||||
if (classElement != null &&
|
||||
classElement.allSupertypes.any(
|
||||
(element) => element.element.name == 'CorrectionProducer')) {
|
||||
(element) => element.element3.name == 'CorrectionProducer')) {
|
||||
var correctionName = classDecl.name.lexeme;
|
||||
|
||||
for (var method in classDecl.members.whereType<MethodDeclaration>()) {
|
||||
|
||||
@@ -24,23 +24,22 @@ import 'package:analyzer/dart/analysis/analysis_context.dart';
|
||||
import 'package:analyzer/dart/analysis/results.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/token.dart';
|
||||
import 'package:analyzer/dart/element/element.dart'
|
||||
import 'package:analyzer/dart/element/element2.dart'
|
||||
show
|
||||
ClassMemberElement,
|
||||
CompilationUnitElement,
|
||||
Element,
|
||||
EnumElement,
|
||||
ExecutableElement,
|
||||
ExtensionElement,
|
||||
FieldElement,
|
||||
FunctionElement,
|
||||
InterfaceElement,
|
||||
LocalVariableElement,
|
||||
MixinElement,
|
||||
ParameterElement,
|
||||
PrefixElement,
|
||||
TypeParameterElement,
|
||||
VariableElement;
|
||||
Element2,
|
||||
EnumElement2,
|
||||
ExecutableElement2,
|
||||
ExtensionElement2,
|
||||
FieldElement2,
|
||||
FormalParameterElement,
|
||||
InterfaceElement2,
|
||||
LibraryElement2,
|
||||
LocalFunctionElement,
|
||||
LocalVariableElement2,
|
||||
MixinElement2,
|
||||
PrefixElement2,
|
||||
TypeParameterElement2,
|
||||
VariableElement2;
|
||||
import 'package:analyzer/file_system/file_system.dart';
|
||||
import 'package:analyzer/file_system/physical_file_system.dart';
|
||||
import 'package:analyzer/src/util/performance/operation_performance.dart';
|
||||
@@ -1589,24 +1588,24 @@ class CompletionResult {
|
||||
var entity = expectedCompletion.syntacticEntity;
|
||||
var element = _getElement(entity);
|
||||
if (element != null) {
|
||||
var parent = element.enclosingElement3;
|
||||
if (parent is InterfaceElement || parent is ExtensionElement) {
|
||||
var parent = element.enclosingElement2;
|
||||
if (parent is InterfaceElement2 || parent is ExtensionElement2) {
|
||||
if (_isStatic(element)) {
|
||||
return CompletionGroup.staticMember;
|
||||
} else {
|
||||
return CompletionGroup.instanceMember;
|
||||
}
|
||||
} else if (parent is CompilationUnitElement &&
|
||||
element is! InterfaceElement &&
|
||||
element is! ExtensionElement) {
|
||||
} else if (parent is LibraryElement2 &&
|
||||
element is! InterfaceElement2 &&
|
||||
element is! ExtensionElement2) {
|
||||
return CompletionGroup.topLevelMember;
|
||||
}
|
||||
|
||||
if (element is EnumElement) {
|
||||
if (element is EnumElement2) {
|
||||
return CompletionGroup.enumElement;
|
||||
} else if (element is MixinElement) {
|
||||
} else if (element is MixinElement2) {
|
||||
return CompletionGroup.mixinElement;
|
||||
} else if (element is InterfaceElement) {
|
||||
} else if (element is InterfaceElement2) {
|
||||
if (entity is SimpleIdentifier &&
|
||||
entity.parent is NamedType &&
|
||||
entity.parent!.parent is ConstructorName &&
|
||||
@@ -1614,17 +1613,17 @@ class CompletionResult {
|
||||
return CompletionGroup.constructorElement;
|
||||
}
|
||||
return CompletionGroup.classElement;
|
||||
} else if (element is ExtensionElement) {
|
||||
} else if (element is ExtensionElement2) {
|
||||
return CompletionGroup.extensionElement;
|
||||
} else if (element is FunctionElement) {
|
||||
} else if (element is LocalFunctionElement) {
|
||||
return CompletionGroup.localFunctionElement;
|
||||
} else if (element is LocalVariableElement) {
|
||||
} else if (element is LocalVariableElement2) {
|
||||
return CompletionGroup.localVariableElement;
|
||||
} else if (element is ParameterElement) {
|
||||
} else if (element is FormalParameterElement) {
|
||||
return CompletionGroup.parameterElement;
|
||||
} else if (element is PrefixElement) {
|
||||
} else if (element is PrefixElement2) {
|
||||
return CompletionGroup.prefixElement;
|
||||
} else if (element is TypeParameterElement) {
|
||||
} else if (element is TypeParameterElement2) {
|
||||
return CompletionGroup.typeParameterElement;
|
||||
}
|
||||
}
|
||||
@@ -1658,9 +1657,9 @@ class CompletionResult {
|
||||
|
||||
/// Return the element associated with the syntactic [entity], or `null` if
|
||||
/// there is no such element.
|
||||
Element? _getElement(SyntacticEntity entity) {
|
||||
Element2? _getElement(SyntacticEntity entity) {
|
||||
if (entity is SimpleIdentifier) {
|
||||
var element = entity.staticElement;
|
||||
var element = entity.element;
|
||||
if (element != null) {
|
||||
return element;
|
||||
}
|
||||
@@ -1669,16 +1668,16 @@ class CompletionResult {
|
||||
var parent = node.parent;
|
||||
if (parent is AssignmentExpression) {
|
||||
if (node == parent.leftHandSide) {
|
||||
return parent.readElement ?? parent.writeElement;
|
||||
return parent.readElement2 ?? parent.writeElement2;
|
||||
}
|
||||
return null;
|
||||
} else if (parent is PrefixExpression) {
|
||||
if (parent.operator.type == TokenType.PLUS_PLUS ||
|
||||
parent.operator.type == TokenType.MINUS_MINUS) {
|
||||
return parent.readElement ?? parent.writeElement;
|
||||
return parent.readElement2 ?? parent.writeElement2;
|
||||
}
|
||||
} else if (parent is PostfixExpression) {
|
||||
return parent.readElement ?? parent.writeElement;
|
||||
return parent.readElement2 ?? parent.writeElement2;
|
||||
}
|
||||
node = parent;
|
||||
}
|
||||
@@ -1688,14 +1687,12 @@ class CompletionResult {
|
||||
|
||||
/// Return `true` if the [element] is static (either top-level or a static
|
||||
/// member of a class or extension).
|
||||
bool _isStatic(Element element) {
|
||||
if (element is ClassMemberElement) {
|
||||
bool _isStatic(Element2 element) {
|
||||
if (element is ExecutableElement2) {
|
||||
return element.isStatic;
|
||||
} else if (element is ExecutableElement) {
|
||||
} else if (element is FieldElement2) {
|
||||
return element.isStatic;
|
||||
} else if (element is FieldElement) {
|
||||
return element.isStatic;
|
||||
} else if (element is VariableElement) {
|
||||
} else if (element is VariableElement2) {
|
||||
return element.isStatic;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -136,15 +136,17 @@ class FlutterDataCollector extends RecursiveAstVisitor<void> {
|
||||
void visitInstanceCreationExpression(InstanceCreationExpression node) {
|
||||
var previousParentWidget = parentWidget;
|
||||
if (node.isWidgetCreation) {
|
||||
var element = node.constructorName.staticElement;
|
||||
var element = node.constructorName.element;
|
||||
if (element == null) {
|
||||
throw StateError(
|
||||
'Unresolved constructor name: ${node.constructorName}');
|
||||
}
|
||||
var childWidget = element.enclosingElement3.name;
|
||||
if (!element.librarySource.uri
|
||||
.toString()
|
||||
.startsWith('package:flutter/')) {
|
||||
var childWidget = element.enclosingElement2.name!;
|
||||
var library = element.library2;
|
||||
if (library != null &&
|
||||
!library.firstFragment.source.uri
|
||||
.toString()
|
||||
.startsWith('package:flutter/')) {
|
||||
childWidget = 'user-defined';
|
||||
}
|
||||
data.recordWidgetCreation(childWidget, parentWidget);
|
||||
|
||||
@@ -7,7 +7,7 @@ import 'dart:math' as math;
|
||||
|
||||
import 'package:_fe_analyzer_shared/src/base/syntactic_entity.dart';
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show convertElementToElementKind, ElementKind;
|
||||
show convertElementToElementKind2, ElementKind;
|
||||
import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
|
||||
import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
|
||||
import 'package:analyzer/dart/analysis/context_root.dart';
|
||||
@@ -15,15 +15,15 @@ import 'package:analyzer/dart/analysis/results.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/dart/element/element.dart'
|
||||
import 'package:analyzer/dart/element/element2.dart'
|
||||
show
|
||||
Element,
|
||||
ExecutableElement,
|
||||
ExtensionElement,
|
||||
InterfaceElement,
|
||||
LibraryElement,
|
||||
ParameterElement,
|
||||
PropertyAccessorElement;
|
||||
Element2,
|
||||
ExecutableElement2,
|
||||
ExtensionElement2,
|
||||
InterfaceElement2,
|
||||
LibraryElement2,
|
||||
FormalParameterElement,
|
||||
SetterElement;
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/dart/element/type_provider.dart';
|
||||
import 'package:analyzer/dart/element/type_system.dart';
|
||||
@@ -268,7 +268,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
InheritanceManager3 inheritanceManager = InheritanceManager3();
|
||||
|
||||
/// The library containing the compilation unit being visited.
|
||||
late LibraryElement enclosingLibrary;
|
||||
late LibraryElement2 enclosingLibrary;
|
||||
|
||||
/// A flag indicating whether we are currently in a context in which type
|
||||
/// parameters are visible.
|
||||
@@ -484,7 +484,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
@override
|
||||
void visitCompilationUnit(CompilationUnit node) {
|
||||
enclosingLibrary = node.declaredElement!.library;
|
||||
enclosingLibrary = node.declaredFragment!.element;
|
||||
typeProvider = enclosingLibrary.typeProvider;
|
||||
typeSystem = enclosingLibrary.typeSystem;
|
||||
inheritanceManager = InheritanceManager3();
|
||||
@@ -770,7 +770,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
// There are no completions.
|
||||
var contextType = featureComputer.computeContextType(node, node.offset);
|
||||
if (contextType != null) {
|
||||
var memberType = _returnType(node.staticElement);
|
||||
var memberType = _returnType(node.element);
|
||||
if (memberType != null) {
|
||||
_recordTypeRelationships(
|
||||
'function expression invocation', contextType, memberType,
|
||||
@@ -967,11 +967,13 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
// There are no completions.
|
||||
data.recordPercentage(
|
||||
'Methods with type parameters', node.typeParameters != null);
|
||||
var element = node.declaredElement!;
|
||||
if (!element.isStatic && element.enclosingElement3 is InterfaceElement) {
|
||||
var overriddenMembers = inheritanceManager.getOverridden2(
|
||||
element.enclosingElement3 as InterfaceElement,
|
||||
Name(element.librarySource.uri, element.name));
|
||||
var fragment = node.declaredFragment!;
|
||||
var element = fragment.element;
|
||||
var enclosingElement = element.enclosingElement2;
|
||||
if (!element.isStatic && enclosingElement is InterfaceElement2) {
|
||||
var overriddenMembers = inheritanceManager.getOverridden4(
|
||||
enclosingElement,
|
||||
Name(fragment.libraryFragment.source.uri, element.name!));
|
||||
if (overriddenMembers != null) {
|
||||
// Consider limiting this to the most immediate override. If the
|
||||
// signature of a method is changed by one of the overrides, then it
|
||||
@@ -988,7 +990,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
@override
|
||||
void visitMethodInvocation(MethodInvocation node) {
|
||||
var member = node.methodName.staticElement;
|
||||
var member = node.methodName.element;
|
||||
_recordMemberDepth(node.target?.staticType, member);
|
||||
if (node.target is SuperExpression) {
|
||||
var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>();
|
||||
@@ -1115,7 +1117,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
@override
|
||||
void visitPropertyAccess(PropertyAccess node) {
|
||||
var member = node.propertyName.staticElement;
|
||||
var member = node.propertyName.element;
|
||||
_recordMemberDepth(node.target?.staticType, member);
|
||||
if (node.target is SuperExpression) {
|
||||
var enclosingMethod = node.thisOrAncestorOfType<MethodDeclaration>();
|
||||
@@ -1127,7 +1129,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!(member is PropertyAccessorElement && member.isSetter)) {
|
||||
if (member is! SetterElement) {
|
||||
var contextType = featureComputer.computeContextType(node, node.offset);
|
||||
if (contextType != null) {
|
||||
var memberType = _returnType(member);
|
||||
@@ -1398,15 +1400,15 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
/// 2: top-level decl
|
||||
/// 3: class member
|
||||
/// 4+: local function
|
||||
int _depth(Element element) {
|
||||
if (element.library != enclosingLibrary) {
|
||||
int _depth(Element2 element) {
|
||||
if (element.library2 != enclosingLibrary) {
|
||||
return 0;
|
||||
}
|
||||
var depth = 0;
|
||||
Element? currentElement = element;
|
||||
Element2? currentElement = element;
|
||||
while (currentElement != enclosingLibrary) {
|
||||
depth++;
|
||||
currentElement = currentElement?.enclosingElement3;
|
||||
currentElement = currentElement?.enclosingElement2;
|
||||
}
|
||||
return depth;
|
||||
}
|
||||
@@ -1426,8 +1428,8 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
/// Return the element associated with the left-most identifier that is a
|
||||
/// child of the [node].
|
||||
Element? _leftMostElement(AstNode node) =>
|
||||
_leftMostIdentifier(node)?.staticElement;
|
||||
Element2? _leftMostElement(AstNode node) =>
|
||||
_leftMostIdentifier(node)?.element;
|
||||
|
||||
/// Return the left-most child of the [node] if it is a simple identifier, or
|
||||
/// `null` if the left-most child is not a simple identifier. Comments and
|
||||
@@ -1453,19 +1455,19 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
/// identifier that is a child of the [node].
|
||||
ElementKind? _leftMostKind(AstNode node) {
|
||||
if (node is InstanceCreationExpression) {
|
||||
return convertElementToElementKind(node.constructorName.staticElement!);
|
||||
return convertElementToElementKind2(node.constructorName.element!);
|
||||
}
|
||||
var element = _leftMostElement(node);
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
if (element is InterfaceElement) {
|
||||
if (element is InterfaceElement2) {
|
||||
var parent = node.parent;
|
||||
if (parent is Annotation && parent.arguments != null) {
|
||||
element = parent.element!;
|
||||
element = parent.element2!;
|
||||
}
|
||||
}
|
||||
return convertElementToElementKind(element);
|
||||
return convertElementToElementKind2(element);
|
||||
}
|
||||
|
||||
/// Return the left-most token that is a child of the [node].
|
||||
@@ -1482,22 +1484,22 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
/// Return the number of functions between the [reference] and the [function]
|
||||
/// in which the referenced parameter is declared.
|
||||
int _parameterReferenceDepth(AstNode? reference, Element function) {
|
||||
int _parameterReferenceDepth(AstNode? reference, Element2 function) {
|
||||
var depth = 0;
|
||||
var node = reference;
|
||||
while (node != null) {
|
||||
if (node is MethodDeclaration) {
|
||||
if (node.declaredElement == function) {
|
||||
if (node.declaredFragment?.element == function) {
|
||||
return depth;
|
||||
}
|
||||
depth++;
|
||||
} else if (node is ConstructorDeclaration) {
|
||||
if (node.declaredElement == function) {
|
||||
if (node.declaredFragment?.element == function) {
|
||||
return depth;
|
||||
}
|
||||
depth++;
|
||||
} else if (node is FunctionExpression) {
|
||||
if (node.declaredElement == function) {
|
||||
if (node.declaredFragment?.element == function) {
|
||||
return depth;
|
||||
}
|
||||
depth++;
|
||||
@@ -1565,39 +1567,39 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
/// Record the distance between the static type of the target (the
|
||||
/// [targetType]) and the [member] to which the reference was resolved.
|
||||
void _recordMemberDepth(DartType? targetType, Element? member) {
|
||||
void _recordMemberDepth(DartType? targetType, Element2? member) {
|
||||
if (member == null) {
|
||||
return;
|
||||
}
|
||||
if (targetType is InterfaceType) {
|
||||
var targetClass = targetType.element;
|
||||
var extension = member.thisOrAncestorOfType<ExtensionElement>();
|
||||
var targetClass = targetType.element3;
|
||||
var extension = member.thisOrAncestorOfType2<ExtensionElement2>();
|
||||
if (extension != null) {
|
||||
_recordDistance('member (extension)', 0);
|
||||
return;
|
||||
}
|
||||
// TODO(brianwilkerson): It might be interesting to also know whether the
|
||||
// [element] was found in a class, interface, or mixin.
|
||||
var memberClass = member.thisOrAncestorOfType<InterfaceElement>();
|
||||
var memberClass = member.thisOrAncestorOfType2<InterfaceElement2>();
|
||||
if (memberClass != null) {
|
||||
/// Return the distance between the [targetClass] and the [memberClass]
|
||||
/// along the superclass chain. This includes all of the implicit
|
||||
/// superclasses caused by mixins.
|
||||
int getSuperclassDepth() {
|
||||
var depth = 0;
|
||||
InterfaceElement? currentClass = targetClass;
|
||||
InterfaceElement2? currentClass = targetClass;
|
||||
while (currentClass != null) {
|
||||
if (currentClass == memberClass) {
|
||||
return depth;
|
||||
}
|
||||
for (var mixin in currentClass.mixins.reversed) {
|
||||
depth++;
|
||||
if (mixin.element == memberClass) {
|
||||
if (mixin.element3 == memberClass) {
|
||||
return depth;
|
||||
}
|
||||
}
|
||||
depth++;
|
||||
currentClass = currentClass.supertype?.element;
|
||||
currentClass = currentClass.supertype?.element3;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@@ -1606,17 +1608,17 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
/// includes all of the implicit superclasses caused by mixins.
|
||||
int getTargetDepth() {
|
||||
var depth = 0;
|
||||
InterfaceElement? currentClass = targetClass;
|
||||
InterfaceElement2? currentClass = targetClass;
|
||||
while (currentClass != null) {
|
||||
depth += currentClass.mixins.length + 1;
|
||||
currentClass = currentClass.supertype?.element;
|
||||
currentClass = currentClass.supertype?.element3;
|
||||
}
|
||||
return depth;
|
||||
}
|
||||
|
||||
var superclassDepth = getSuperclassDepth();
|
||||
var interfaceDepth =
|
||||
featureComputer.inheritanceDistance(targetClass, memberClass);
|
||||
featureComputer.inheritanceDistance2(targetClass, memberClass);
|
||||
if (superclassDepth >= 0) {
|
||||
_recordDistance('member (superclass)', superclassDepth);
|
||||
} else if (interfaceDepth >= 0) {
|
||||
@@ -1635,19 +1637,19 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
}
|
||||
|
||||
void _recordOverride(
|
||||
ExecutableElement override, ExecutableElement overridden) {
|
||||
var positionalInOverride = <ParameterElement>[];
|
||||
var namedInOverride = <String, ParameterElement>{};
|
||||
var positionalInOverridden = <ParameterElement>[];
|
||||
var namedInOverridden = <String, ParameterElement>{};
|
||||
for (var param in override.parameters) {
|
||||
ExecutableElement2 override, ExecutableElement2 overridden) {
|
||||
var positionalInOverride = <FormalParameterElement>[];
|
||||
var namedInOverride = <String, FormalParameterElement>{};
|
||||
var positionalInOverridden = <FormalParameterElement>[];
|
||||
var namedInOverridden = <String, FormalParameterElement>{};
|
||||
for (var param in override.formalParameters) {
|
||||
if (param.isPositional) {
|
||||
positionalInOverride.add(param);
|
||||
} else {
|
||||
namedInOverride[param.name] = param;
|
||||
}
|
||||
}
|
||||
for (var param in overridden.parameters) {
|
||||
for (var param in overridden.formalParameters) {
|
||||
if (param.isPositional) {
|
||||
positionalInOverridden.add(param);
|
||||
} else {
|
||||
@@ -1655,8 +1657,8 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
}
|
||||
}
|
||||
|
||||
void recordParameterOverride(ParameterElement? overrideParameter,
|
||||
ParameterElement? overriddenParameter) {
|
||||
void recordParameterOverride(FormalParameterElement? overrideParameter,
|
||||
FormalParameterElement? overriddenParameter) {
|
||||
var overrideType = overrideParameter?.type;
|
||||
var overriddenType = overriddenParameter?.type;
|
||||
if (overrideType == null ||
|
||||
@@ -1686,9 +1688,9 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
/// that is a child of the given [node].
|
||||
void _recordReferenceDepth(AstNode? node) {
|
||||
var reference = _leftMostIdentifier(node);
|
||||
var element = reference?.staticElement;
|
||||
if (element is ParameterElement) {
|
||||
var definingElement = element.enclosingElement3!;
|
||||
var element = reference?.element;
|
||||
if (element is FormalParameterElement) {
|
||||
var definingElement = element.enclosingElement2!;
|
||||
var depth = _parameterReferenceDepth(node, definingElement);
|
||||
_recordDistance('function depth of referenced parameter', depth);
|
||||
} else if (element != null) {
|
||||
@@ -1752,7 +1754,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
/// Record information about how the argument as a whole and the first token
|
||||
/// in the expression match the type of the associated parameter.
|
||||
void _recordTypeMatch(Expression argument) {
|
||||
var parameterType = argument.staticParameterElement?.type;
|
||||
var parameterType = argument.correspondingParameter?.type;
|
||||
if (parameterType == null || parameterType is DynamicType) {
|
||||
return;
|
||||
}
|
||||
@@ -1772,8 +1774,8 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
if (identifier != null) {
|
||||
var firstTokenType = identifier.staticType;
|
||||
if (firstTokenType == null) {
|
||||
var element = identifier.staticElement;
|
||||
if (element is InterfaceElement) {
|
||||
var element = identifier.element;
|
||||
if (element is InterfaceElement2) {
|
||||
// This is effectively treating a reference to a class name as having
|
||||
// the same type as an instance of the class, which isn't valid, but
|
||||
// on the other hand, the spec doesn't define the static type of a
|
||||
@@ -1806,20 +1808,20 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
argumentType is InterfaceType &&
|
||||
parameterType is InterfaceType) {
|
||||
int distance;
|
||||
if (parameterType.element == typeProvider.futureOrElement) {
|
||||
if (parameterType.element3 == typeProvider.futureOrElement2) {
|
||||
var typeArgument = parameterType.typeArguments[0];
|
||||
distance = featureComputer.inheritanceDistance(
|
||||
argumentType.element, typeProvider.futureElement);
|
||||
distance = featureComputer.inheritanceDistance2(
|
||||
argumentType.element3, typeProvider.futureElement2);
|
||||
if (typeArgument is InterfaceType) {
|
||||
var argDistance = featureComputer.inheritanceDistance(
|
||||
argumentType.element, typeArgument.element);
|
||||
var argDistance = featureComputer.inheritanceDistance2(
|
||||
argumentType.element3, typeArgument.element3);
|
||||
if (distance < 0 || (argDistance >= 0 && argDistance < distance)) {
|
||||
distance = argDistance;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
distance = featureComputer.inheritanceDistance(
|
||||
argumentType.element, parameterType.element);
|
||||
distance = featureComputer.inheritanceDistance2(
|
||||
argumentType.element3, parameterType.element3);
|
||||
}
|
||||
data.recordDistance('Subtype of context type ($descriptor)', distance);
|
||||
data.recordDistance('Subtype of context type (all)', distance);
|
||||
@@ -1835,8 +1837,8 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
/// Return the return type of the [element], or `null` if the element doesn't
|
||||
/// have a return type.
|
||||
DartType? _returnType(Element? element) {
|
||||
if (element is ExecutableElement) {
|
||||
DartType? _returnType(Element2? element) {
|
||||
if (element is ExecutableElement2) {
|
||||
return element.returnType;
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -14,8 +14,8 @@ import 'package:analyzer/dart/analysis/results.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/dart/element/element.dart'
|
||||
show Element, InterfaceElement, LibraryElement;
|
||||
import 'package:analyzer/dart/element/element2.dart'
|
||||
show Element2, InterfaceElement2, LibraryElement2;
|
||||
import 'package:analyzer/dart/element/type_provider.dart';
|
||||
import 'package:analyzer/dart/element/type_system.dart';
|
||||
import 'package:analyzer/diagnostic/diagnostic.dart';
|
||||
@@ -300,7 +300,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
late InheritanceManager3 inheritanceManager = InheritanceManager3();
|
||||
|
||||
/// The library containing the compilation unit being visited.
|
||||
late LibraryElement enclosingLibrary;
|
||||
late LibraryElement2 enclosingLibrary;
|
||||
|
||||
/// The type provider associated with the current compilation unit.
|
||||
late TypeProvider typeProvider;
|
||||
@@ -485,7 +485,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
@override
|
||||
void visitCompilationUnit(CompilationUnit node) {
|
||||
enclosingLibrary = node.declaredElement!.library;
|
||||
enclosingLibrary = node.declaredFragment!.element;
|
||||
typeProvider = enclosingLibrary.typeProvider;
|
||||
typeSystem = enclosingLibrary.typeSystem;
|
||||
inheritanceManager = InheritanceManager3();
|
||||
@@ -1314,8 +1314,8 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
|
||||
/// Return the element associated with the left-most identifier that is a
|
||||
/// child of the [node].
|
||||
Element? _leftMostElement(AstNode node) =>
|
||||
_leftMostIdentifier(node)?.staticElement;
|
||||
Element2? _leftMostElement(AstNode node) =>
|
||||
_leftMostIdentifier(node)?.element;
|
||||
|
||||
/// Return the left-most child of the [node] if it is a simple identifier, or
|
||||
/// `null` if the left-most child is not a simple identifier. Comments and
|
||||
@@ -1341,20 +1341,19 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
/// identifier that is a child of the [node].
|
||||
ElementKind? _leftMostKind(AstNode node) {
|
||||
if (node is InstanceCreationExpression) {
|
||||
return featureComputer
|
||||
.computeElementKind(node.constructorName.staticElement!);
|
||||
return featureComputer.computeElementKind2(node.constructorName.element!);
|
||||
}
|
||||
var element = _leftMostElement(node);
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
if (element is InterfaceElement) {
|
||||
if (element is InterfaceElement2) {
|
||||
var parent = node.parent;
|
||||
if (parent is Annotation && parent.arguments != null) {
|
||||
element = parent.element!;
|
||||
element = parent.element2!;
|
||||
}
|
||||
}
|
||||
return featureComputer.computeElementKind(element);
|
||||
return featureComputer.computeElementKind2(element);
|
||||
}
|
||||
|
||||
/// Return the left-most token that is a child of the [node].
|
||||
|
||||
@@ -9,7 +9,7 @@ import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/syntactic_entity.dart';
|
||||
import 'package:analyzer/dart/ast/token.dart';
|
||||
import 'package:analyzer/dart/ast/visitor.dart';
|
||||
import 'package:analyzer/dart/element/element.dart' as element;
|
||||
import 'package:analyzer/dart/element/element2.dart' as element;
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/source/line_info.dart';
|
||||
|
||||
@@ -640,7 +640,7 @@ class ExpectedCompletionsVisitor extends RecursiveAstVisitor<void> {
|
||||
void visitSimpleIdentifier(SimpleIdentifier node) {
|
||||
if (_doIncludeSimpleIdentifier(node)) {
|
||||
protocol.ElementKind? elementKind;
|
||||
var kind = node.staticElement?.kind;
|
||||
var kind = node.element?.kind;
|
||||
if (kind != null) {
|
||||
elementKind = protocol.convertElementKind(kind);
|
||||
|
||||
@@ -827,8 +827,8 @@ class ExpectedCompletionsVisitor extends RecursiveAstVisitor<void> {
|
||||
// The null check, node.staticElement == null, handles the cases where the
|
||||
// invocation is unknown, i.e. the 'arg' in 'foo.bar(arg: 1)', where foo is
|
||||
// dynamic.
|
||||
if ((node.staticElement == null ||
|
||||
node.staticElement?.kind == element.ElementKind.PARAMETER) &&
|
||||
if ((node.element == null ||
|
||||
node.element?.kind == element.ElementKind.PARAMETER) &&
|
||||
node.parent is Label &&
|
||||
node.thisOrAncestorOfType<ArgumentList>() != null) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user