diff --git a/pkg/analysis_server/analyzer_use_new_elements.txt b/pkg/analysis_server/analyzer_use_new_elements.txt index 7f77e6990b2..14a367458e7 100644 --- a/pkg/analysis_server/analyzer_use_new_elements.txt +++ b/pkg/analysis_server/analyzer_use_new_elements.txt @@ -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 diff --git a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart index 211de59809a..8ad58e573b3 100644 --- a/pkg/analysis_server/tool/bulk_fix/parse_utils.dart +++ b/pkg/analysis_server/tool/bulk_fix/parse_utils.dart @@ -29,10 +29,10 @@ class BulkFixDetails { .getResolvedUnit(file.absolute.path) as ResolvedUnitResult; for (var classDecl in resolvedFile.unit.declarations.whereType()) { - 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()) { diff --git a/pkg/analysis_server/tool/code_completion/completion_metrics.dart b/pkg/analysis_server/tool/code_completion/completion_metrics.dart index 261a012f3a5..34497cb4d15 100644 --- a/pkg/analysis_server/tool/code_completion/completion_metrics.dart +++ b/pkg/analysis_server/tool/code_completion/completion_metrics.dart @@ -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; diff --git a/pkg/analysis_server/tool/code_completion/flutter_metrics.dart b/pkg/analysis_server/tool/code_completion/flutter_metrics.dart index 87b76c960b1..d67c9ad5c87 100644 --- a/pkg/analysis_server/tool/code_completion/flutter_metrics.dart +++ b/pkg/analysis_server/tool/code_completion/flutter_metrics.dart @@ -136,15 +136,17 @@ class FlutterDataCollector extends RecursiveAstVisitor { 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); diff --git a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart index 5dac4fa2580..af2d340c20d 100644 --- a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart +++ b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart @@ -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 { 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 { @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 { // 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 { // 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 { @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(); @@ -1115,7 +1117,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor { @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(); @@ -1127,7 +1129,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor { } } } - 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 { /// 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 { /// 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 { /// 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 { /// 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 { /// 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(); + var targetClass = targetType.element3; + var extension = member.thisOrAncestorOfType2(); 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(); + var memberClass = member.thisOrAncestorOfType2(); 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 { /// 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 _recordOverride( - ExecutableElement override, ExecutableElement overridden) { - var positionalInOverride = []; - var namedInOverride = {}; - var positionalInOverridden = []; - var namedInOverridden = {}; - for (var param in override.parameters) { + ExecutableElement2 override, ExecutableElement2 overridden) { + var positionalInOverride = []; + var namedInOverride = {}; + var positionalInOverridden = []; + var namedInOverridden = {}; + 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 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 { /// 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 { /// 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 { 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 { 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 { /// 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; diff --git a/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart b/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart index 83c9128af75..9ac40f634ce 100644 --- a/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart +++ b/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart @@ -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 { 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 { @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 { /// 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 { /// 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]. diff --git a/pkg/analysis_server/tool/code_completion/visitors.dart b/pkg/analysis_server/tool/code_completion/visitors.dart index 4c26ec0dd28..bff5f8e41a3 100644 --- a/pkg/analysis_server/tool/code_completion/visitors.dart +++ b/pkg/analysis_server/tool/code_completion/visitors.dart @@ -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 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 { // 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() != null) { return false;