Elements. Migrate lib/src/dart/constant/potentially_constant.dart
Change-Id: Ib03cea348b23e1d5693242ede798aa10357a6a5a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/402884
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/analyzer_use_new_elements.txt b/pkg/analyzer/analyzer_use_new_elements.txt
index cd8ab8b..13990e9 100644
--- a/pkg/analyzer/analyzer_use_new_elements.txt
+++ b/pkg/analyzer/analyzer_use_new_elements.txt
@@ -23,7 +23,6 @@
lib/src/dart/ast/utilities.dart
lib/src/dart/constant/constant_verifier.dart
lib/src/dart/constant/evaluation.dart
-lib/src/dart/constant/potentially_constant.dart
lib/src/dart/constant/utilities.dart
lib/src/dart/constant/value.dart
lib/src/dart/element/class_hierarchy.dart
diff --git a/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart b/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
index 384ee1e..da876e6 100644
--- a/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
+++ b/pkg/analyzer/lib/src/dart/constant/potentially_constant.dart
@@ -5,12 +5,12 @@
import 'package:analyzer/dart/analysis/features.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';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
import 'package:analyzer/src/dart/element/type.dart';
-/// Some [ConstructorElement]s can be temporary marked as "const" to check
+/// Some [ConstructorElement2]s can be temporary marked as "const" to check
/// if doing this is valid.
final temporaryConstConstructorElements = Expando<bool>();
@@ -39,8 +39,8 @@
}
bool _isConstantTypeName(Identifier name) {
- var element = name.staticElement;
- if (element is InterfaceElement || element is TypeAliasElement) {
+ var element = name.element;
+ if (element is InterfaceElement2 || element is TypeAliasElement2) {
if (name is PrefixedIdentifier) {
if (name.isDeferred) {
return false;
@@ -212,7 +212,7 @@
}
void _identifier(Identifier node) {
- var element = node.staticElement;
+ var element = node.element;
if (node is PrefixedIdentifier) {
if (node.isDeferred) {
@@ -223,7 +223,7 @@
collect(node.prefix);
return;
}
- if (element is MethodElement && element.isStatic) {
+ if (element is MethodElement2 && element.isStatic) {
if (!_isConstantTypeName(node.prefix)) {
nodes.add(node);
}
@@ -231,9 +231,9 @@
}
}
- if (element is ParameterElement) {
- var enclosing = element.enclosingElement3;
- if (enclosing is ConstructorElement &&
+ if (element is FormalParameterElement) {
+ var enclosing = element.enclosingElement2;
+ if (enclosing is ConstructorElement2 &&
isConstConstructorElement(enclosing)) {
if (node.thisOrAncestorOfType<ConstructorInitializer>() != null) {
return;
@@ -243,14 +243,14 @@
return;
}
- if (element is VariableElement) {
+ if (element is VariableElement2) {
if (!element.isConst) {
nodes.add(node);
}
return;
}
- if (element is PropertyAccessorElement && element.isGetter) {
- var variable = element.variable2;
+ if (element is GetterElement) {
+ var variable = element.variable3;
if (variable == null) {
return;
}
@@ -262,13 +262,13 @@
if (_isConstantTypeName(node)) {
return;
}
- if (element is FunctionElement) {
+ if (element is TopLevelFunctionElement) {
return;
}
- if (element is MethodElement && element.isStatic) {
+ if (element is MethodElement2 && element.isStatic) {
return;
}
- if (element is TypeParameterElement &&
+ if (element is TypeParameterElement2 &&
featureSet.isEnabled(Feature.constructor_tearoffs)) {
return;
}
@@ -278,8 +278,8 @@
void _methodInvocation(MethodInvocation node) {
var arguments = node.argumentList.arguments;
if (arguments.length == 2) {
- var element = node.methodName.staticElement;
- if (element is FunctionElement && element.isDartCoreIdentical) {
+ var element = node.methodName.element;
+ if (element is TopLevelFunctionElement && element.isDartCoreIdentical) {
collect(arguments[0]);
collect(arguments[1]);
return;
@@ -304,9 +304,9 @@
return;
}
- var element = node.propertyName.staticElement;
- if (element is PropertyAccessorElement && element.isGetter) {
- var variable = element.variable2;
+ var element = node.propertyName.element;
+ if (element is GetterElement) {
+ var variable = element.variable3;
if (variable == null) {
return;
}
@@ -384,7 +384,7 @@
}
}
- static bool isConstConstructorElement(ConstructorElement element) {
+ static bool isConstConstructorElement(ConstructorElement2 element) {
if (element.isConst) return true;
return temporaryConstConstructorElements[element] ?? false;
}
@@ -402,7 +402,7 @@
}
if (potentially &&
node is NamedType &&
- node.element is TypeParameterElement) {
+ node.element2 is TypeParameterElement2) {
return true;
}
@@ -467,8 +467,8 @@
extension on NamedType {
bool get isConstantNamedType {
- var element = this.element;
- if (element is InterfaceElement || element is TypeAliasElement) {
+ var element2 = this.element2;
+ if (element2 is InterfaceElement2 || element2 is TypeAliasElement2) {
return !isDeferred;
}
return false;
diff --git a/pkg/analyzer/lib/src/lint/constants.dart b/pkg/analyzer/lib/src/lint/constants.dart
index cb1ff1f..c976302 100644
--- a/pkg/analyzer/lib/src/lint/constants.dart
+++ b/pkg/analyzer/lib/src/lint/constants.dart
@@ -4,7 +4,7 @@
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/constant/value.dart';
-import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
@@ -117,10 +117,10 @@
extension ConstructorDeclarationExtension on ConstructorDeclaration {
bool get canBeConst {
- var element = declaredElement!;
+ var element = declaredFragment!.element;
- var classElement = element.enclosingElement3;
- if (classElement is ClassElement && classElement.hasNonFinalField) {
+ var classElement = element.enclosingElement2;
+ if (classElement is ClassElement2 && classElement.hasNonFinalField) {
return false;
}