Elements. Migrate FlowAnalysisHelper.
Change-Id: I34bf657dbf7eb9ad4fc7b207e07d282df70ff54d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409240
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
index 34de78f..164b36f 100644
--- a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
@@ -2,8 +2,6 @@
// 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.
-// ignore_for_file: analyzer_use_new_elements
-
/// @docImport 'package:analyzer/src/generated/resolver.dart';
library;
@@ -16,7 +14,6 @@
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';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -213,7 +210,7 @@
}
void breakStatement(BreakStatement node) {
- var target = getLabelTarget(node, node.label?.staticElement, isBreak: true);
+ var target = getLabelTarget(node, node.label?.element, isBreak: true);
flow!.handleBreak(target);
}
@@ -229,8 +226,7 @@
}
void continueStatement(ContinueStatement node) {
- var target =
- getLabelTarget(node, node.label?.staticElement, isBreak: false);
+ var target = getLabelTarget(node, node.label?.element, isBreak: false);
flow!.handleContinue(target);
}
@@ -380,7 +376,7 @@
/// not specify a label), so the default enclosing target is returned.
///
/// [isBreak] is `true` for `break`, and `false` for `continue`.
- static StatementImpl? getLabelTarget(AstNode? node, Element? element,
+ static StatementImpl? getLabelTarget(AstNode? node, Element2? element,
{required bool isBreak}) {
for (; node != null; node = node.parent) {
if (element == null) {
@@ -423,9 +419,9 @@
return null;
}
- static bool _hasLabel(List<Label> labels, Element element) {
+ static bool _hasLabel(List<Label> labels, Element2 element) {
for (var nodeLabel in labels) {
- if (identical(nodeLabel.label.staticElement, element)) {
+ if (identical(nodeLabel.label.element, element)) {
return true;
}
}
@@ -604,7 +600,7 @@
@override
bool isExtensionTypeInternal(TypeImpl type) {
- return type is InterfaceType && type.element is ExtensionTypeElement;
+ return type is InterfaceType && type.element3 is ExtensionTypeElement2;
}
@override
@@ -617,7 +613,7 @@
return type is InterfaceType &&
!type.isDartCoreNull &&
!type.isDartAsyncFutureOr &&
- type.element is! ExtensionTypeElement;
+ type.element3 is! ExtensionTypeElement2;
}
@override
@@ -643,9 +639,9 @@
@override
bool isPropertyPromotable(Object property) {
- if (property is! PropertyAccessorElement) return false;
- var field = property.variable2;
- if (field is! FieldElement) return false;
+ if (property is! PropertyAccessorElement2) return false;
+ var field = property.variable3;
+ if (field is! FieldElement2) return false;
return field.isPromotable;
}
@@ -788,7 +784,7 @@
TypeImpl? matchTypeParameterBoundInternal(TypeImpl type) {
if (type is TypeParameterTypeImpl &&
type.nullabilitySuffix == NullabilitySuffix.none) {
- return type.promotedBound ?? type.element.bound;
+ return type.promotedBound ?? type.element3.bound;
} else {
return null;
}
@@ -848,13 +844,13 @@
@override
PropertyNonPromotabilityReason? whyPropertyIsNotPromotable(
- covariant ExecutableElement property) {
+ covariant ExecutableElement2 property) {
if (property.isPublic) return PropertyNonPromotabilityReason.isNotPrivate;
- if (property is! PropertyAccessorElement) {
+ if (property is! PropertyAccessorElement2) {
return PropertyNonPromotabilityReason.isNotField;
}
- var field = property.variable2;
- if (field is! FieldElement) {
+ var field = property.variable3;
+ if (field is! FieldElement2) {
return PropertyNonPromotabilityReason.isNotField;
}
if (field.isSynthetic && !property.isSynthetic) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index f23cb7b..7193a00 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -984,7 +984,7 @@
? CascadePropertyTarget.singleton
: ThisPropertyTarget.singleton,
node.methodName.name,
- element,
+ element.asElement2,
SharedTypeView(getterReturnType))
?.unwrapTypeView() ??
targetType;
@@ -1010,7 +1010,7 @@
functionExpression,
SuperPropertyTarget.singleton,
node.methodName.name,
- node.methodName.staticElement,
+ node.methodName.element,
SharedTypeView(getterReturnType))
?.unwrapTypeView() ??
targetType;
@@ -1020,7 +1020,7 @@
functionExpression,
ExpressionPropertyTarget(target),
node.methodName.name,
- node.methodName.staticElement,
+ node.methodName.element,
SharedTypeView(getterReturnType))
?.unwrapTypeView() ??
targetType;
diff --git a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
index d91f0f4..85ced01 100644
--- a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
@@ -272,8 +272,12 @@
!readElementRequested.isStatic) {
var unpromotedType = readElementRequested.returnType;
getType = _resolver.flowAnalysis.flow
- ?.propertyGet(node, ThisPropertyTarget.singleton, node.name,
- readElementRequested, SharedTypeView(unpromotedType))
+ ?.propertyGet(
+ node,
+ ThisPropertyTarget.singleton,
+ node.name,
+ readElementRequested.asElement2,
+ SharedTypeView(unpromotedType))
?.unwrapTypeView() ??
unpromotedType;
}
@@ -511,7 +515,7 @@
as PropertyTarget<ExpressionImpl>
: ExpressionPropertyTarget(target),
propertyName.name,
- result.getter2?.asElement,
+ result.getter2,
SharedTypeView(unpromotedType))
?.unwrapTypeView() ??
unpromotedType;
@@ -849,7 +853,7 @@
node,
SuperPropertyTarget.singleton,
propertyName.name,
- readElement,
+ readElement.asElement2,
SharedTypeView(unpromotedType))
?.unwrapTypeView() ??
unpromotedType;
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 14fef89..e44d59a 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -1604,7 +1604,7 @@
}
@override
- (ExecutableElement?, SharedTypeView) resolveObjectPatternPropertyGet({
+ (ExecutableElement2?, SharedTypeView) resolveObjectPatternPropertyGet({
required covariant ObjectPatternImpl objectPattern,
required SharedTypeView receiverType,
required covariant SharedPatternField field,
@@ -1636,9 +1636,9 @@
if (getter != null) {
fieldNode.element = getter;
if (getter is PropertyAccessorElementOrMember) {
- return (getter, SharedTypeView(getter.returnType));
+ return (getter.asElement2, SharedTypeView(getter.returnType));
} else {
- return (getter, SharedTypeView(getter.type));
+ return (getter.asElement2, SharedTypeView(getter.type));
}
}
@@ -5680,6 +5680,9 @@
List<DiagnosticMessage> visitPropertyNotPromotedForInherentReason(
PropertyNotPromotedForInherentReason reason) {
var receiverElement = reason.propertyMember;
+ if (receiverElement is PropertyAccessorElement2) {
+ receiverElement = receiverElement.asElement;
+ }
if (receiverElement is PropertyAccessorElement) {
var property = propertyReference = receiverElement;
var propertyName = reason.propertyName;
@@ -5717,6 +5720,9 @@
List<DiagnosticMessage> visitPropertyNotPromotedForNonInherentReason(
PropertyNotPromotedForNonInherentReason reason) {
var receiverElement = reason.propertyMember;
+ if (receiverElement is PropertyAccessorElement2) {
+ receiverElement = receiverElement.asElement;
+ }
if (receiverElement is PropertyAccessorElement) {
var property = propertyReference = receiverElement;
var propertyName = reason.propertyName;