Skip to content

Commit f0d4a75

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Replace VariableElement.constantInitializer with Expression.
* Remove deprecated `VariableElement.constantInitializer2`. * Remove deprecated `VariableFragment.initializer`. * Remove deprecated `ConstantInitializer`. Change-Id: I96a0692df5d13d59d4d9de1c38a5311e299e009e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/440542 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 953ac25 commit f0d4a75

File tree

12 files changed

+49
-130
lines changed

12 files changed

+49
-130
lines changed

pkg/analyzer/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
* Remove deprecated `LocalVariableFragment.nameOffset`.
1212
* Remove deprecated `JoinPatternVariableFragment.isConsistent`.
1313
* Remove deprecated `JoinPatternVariableFragment.variables2`.
14+
* Remove deprecated `VariableElement.constantInitializer2`.
15+
* Remove deprecated `VariableFragment.initializer`.
16+
* Remove deprecated `ConstantInitializer`.
1417
* `LibraryFragment` is not `Annotatable` anymore.
1518
* Stop implementing `ConstantEvaluationTarget` by `ElementAnnotation`.
1619
This is an internal interface that should not have been exposed.

pkg/analyzer/api.txt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3302,11 +3302,6 @@ package:analyzer/dart/element/element.dart:
33023302
element (getter: ClassElement)
33033303
nextFragment (getter: ClassFragment?)
33043304
previousFragment (getter: ClassFragment?)
3305-
ConstantInitializer (class extends Object):
3306-
new (constructor: ConstantInitializer Function())
3307-
expression (getter: Expression)
3308-
fragment (getter: VariableFragment)
3309-
evaluate (method: DartObject? Function())
33103305
ConstructorElement (class extends Object implements ExecutableElement, HasSinceSdkVersion):
33113306
new (constructor: ConstructorElement Function())
33123307
baseElement (getter: ConstructorElement)
@@ -4181,8 +4176,7 @@ package:analyzer/dart/element/element.dart:
41814176
typeParameters2 (getter: List<TypeParameterFragment>, deprecated)
41824177
VariableElement (class extends Object implements Element):
41834178
new (constructor: VariableElement Function())
4184-
constantInitializer (getter: ConstantInitializer?)
4185-
constantInitializer2 (getter: ConstantInitializer?, deprecated)
4179+
constantInitializer (getter: Expression?)
41864180
firstFragment (getter: VariableFragment)
41874181
fragments (getter: List<VariableFragment>)
41884182
hasImplicitType (getter: bool)
@@ -4195,7 +4189,6 @@ package:analyzer/dart/element/element.dart:
41954189
VariableFragment (class extends Object implements Fragment):
41964190
new (constructor: VariableFragment Function())
41974191
element (getter: VariableElement)
4198-
initializer (getter: Expression?)
41994192
nextFragment (getter: VariableFragment?)
42004193
previousFragment (getter: VariableFragment?)
42014194
BindPatternVariableElement2 (type alias for BindPatternVariableElement, deprecated)
@@ -4237,7 +4230,6 @@ package:analyzer/dart/element/element2.dart:
42374230
BindPatternVariableFragment (see above)
42384231
ClassElement (see above)
42394232
ClassFragment (see above)
4240-
ConstantInitializer (see above)
42414233
ConstructorElement (see above)
42424234
ConstructorFragment (see above)
42434235
DirectiveUri (see above)

pkg/analyzer/lib/dart/element/element.dart

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -358,27 +358,6 @@ abstract class ClassFragment implements InterfaceFragment {
358358
ClassFragment? get previousFragment;
359359
}
360360

361-
/// The initializer of a constant variable, or the default value for a formal
362-
/// parameter.
363-
abstract class ConstantInitializer {
364-
/// The expression of the initializer.
365-
///
366-
/// For variables that have multiple fragments, this is the expression from
367-
/// the last fragment. For formal parameters, only the first fragment can
368-
/// have the default value.
369-
Expression get expression;
370-
371-
/// The [VariableFragment] that has [expression].
372-
///
373-
/// The offsets are inside the [LibraryFragment] that contains [fragment].
374-
VariableFragment get fragment;
375-
376-
/// Returns the result of evaluating [expression], computes it if necessary.
377-
///
378-
/// Returns `null` if the value could not be computed because of errors.
379-
DartObject? evaluate();
380-
}
381-
382361
/// An element representing a constructor defined by a class, enum, or extension
383362
/// type.
384363
///
@@ -4052,15 +4031,7 @@ abstract class VariableElement implements Element {
40524031
///
40534032
/// Is `null` if this variable is not a constant, or does not have the
40544033
/// initializer or the default value specified.
4055-
ConstantInitializer? get constantInitializer;
4056-
4057-
/// The constant initializer for this constant variable, or the default
4058-
/// value for this formal parameter.
4059-
///
4060-
/// Is `null` if this variable is not a constant, or does not have the
4061-
/// initializer or the default value specified.
4062-
@Deprecated('Use constantInitializer instead')
4063-
ConstantInitializer? get constantInitializer2;
4034+
Expression? get constantInitializer;
40644035

40654036
@override
40664037
VariableFragment get firstFragment;
@@ -4116,13 +4087,6 @@ abstract class VariableFragment implements Fragment {
41164087
@override
41174088
VariableElement get element;
41184089

4119-
/// The initializer for this constant variable fragment, or the default value
4120-
/// for this formal parameter fragment.
4121-
///
4122-
/// Is `null` if this variable fragment is not a constant, or does not have
4123-
/// the initializer or the default value specified.
4124-
Expression? get initializer;
4125-
41264090
@override
41274091
VariableFragment? get nextFragment;
41284092

pkg/analyzer/lib/src/dart/constant/evaluation.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class ConstantEvaluationEngine {
8888
var libraryFragment = constant.libraryFragment!;
8989
var library = libraryFragment.element;
9090
if (constant is FormalParameterElementImpl) {
91-
var defaultValue = constant.constantInitializer?.expression;
91+
var defaultValue = constant.constantInitializer;
9292
if (defaultValue != null) {
9393
var diagnosticListener = RecordingDiagnosticListener();
9494
var diagnosticReporter = DiagnosticReporter(
@@ -106,7 +106,7 @@ class ConstantEvaluationEngine {
106106
constant.evaluationResult = _nullObject(library);
107107
}
108108
} else if (constant is VariableElementImpl) {
109-
var constantInitializer = constant.constantInitializer?.expression;
109+
var constantInitializer = constant.constantInitializer;
110110
if (constantInitializer != null) {
111111
var diagnosticReporter = DiagnosticReporter(
112112
RecordingDiagnosticListener(),
@@ -260,7 +260,7 @@ class ConstantEvaluationEngine {
260260

261261
if (constant is VariableElementImpl) {
262262
var declaration = constant;
263-
var initializer = declaration.constantInitializer?.expression;
263+
var initializer = declaration.constantInitializer;
264264
if (initializer != null) {
265265
initializer.accept(referenceFinder);
266266
}
@@ -3063,7 +3063,7 @@ class _InstanceCreationEvaluator {
30633063
var fieldType = substitution.substituteType(field.type);
30643064
if (!typeSystem.runtimeTypeMatch(fieldValue, fieldType)) {
30653065
var isRuntimeException = hasTypeParameterReference(field.type);
3066-
var errorNode = field.constantInitializer?.expression ?? _errorNode;
3066+
var errorNode = field.constantInitializer ?? _errorNode;
30673067
return InvalidConstant.forEntity(
30683068
entity: errorNode,
30693069
diagnosticCode:

pkg/analyzer/lib/src/dart/constant/utilities.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class ConstantFinder extends RecursiveAstVisitor<void> {
182182
constantsToCompute.add(element);
183183

184184
configuration.addErrorNode(
185-
fromElement: element.constantInitializer?.expression,
185+
fromElement: element.constantInitializer,
186186
fromAst: node,
187187
);
188188
}
@@ -202,7 +202,7 @@ class ConstantFinder extends RecursiveAstVisitor<void> {
202202
// Fill error nodes.
203203
if (element.constantInitializer case var constantInitializer?) {
204204
configuration.addErrorNode(
205-
fromElement: constantInitializer.expression,
205+
fromElement: constantInitializer,
206206
fromAst: node.initializer,
207207
);
208208
}

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -719,26 +719,12 @@ class ClassFragmentImpl extends InterfaceFragmentImpl implements ClassFragment {
719719
}
720720
}
721721

722-
class ConstantInitializerImpl implements ConstantInitializer {
723-
@override
722+
// TODO(scheglov): remove this
723+
class ConstantInitializerImpl {
724724
final VariableFragmentImpl fragment;
725-
726-
@override
727725
final ExpressionImpl expression;
728726

729-
/// The cached result of [evaluate].
730-
Constant? _evaluationResult;
731-
732727
ConstantInitializerImpl({required this.fragment, required this.expression});
733-
734-
@override
735-
DartObject? evaluate() {
736-
if (_evaluationResult case DartObjectImpl result) {
737-
return result;
738-
}
739-
// TODO(scheglov): implement it
740-
throw UnimplementedError();
741-
}
742728
}
743729

744730
class ConstructorElementImpl extends ExecutableElementImpl
@@ -3013,7 +2999,7 @@ class FormalParameterElementImpl extends PromotableElementImpl
30132999
@override
30143000
// TODO(augmentations): Implement the merge of formal parameters.
30153001
String? get defaultValueCode {
3016-
return constantInitializer?.expression.toSource();
3002+
return constantInitializer2?.expression.toSource();
30173003
}
30183004

30193005
@override
@@ -6919,7 +6905,9 @@ class LocalFunctionElementImpl extends ExecutableElementImpl
69196905

69206906
@override
69216907
List<TypeParameterElementImpl> get typeParameters {
6922-
return firstFragment.typeParameters.map((fragment) => fragment.element).toList();
6908+
return firstFragment.typeParameters
6909+
.map((fragment) => fragment.element)
6910+
.toList();
69236911
}
69246912

69256913
@Deprecated('Use typeParameters instead')
@@ -9188,7 +9176,7 @@ class SuperFormalParameterElementImpl extends FormalParameterElementImpl
91889176
return null;
91899177
}
91909178

9191-
var constantInitializer = this.constantInitializer?.expression;
9179+
var constantInitializer = constantInitializer2?.expression;
91929180
if (constantInitializer != null) {
91939181
return constantInitializer.toSource();
91949182
}
@@ -9202,7 +9190,7 @@ class SuperFormalParameterElementImpl extends FormalParameterElementImpl
92029190

92039191
@override
92049192
Constant? get evaluationResult {
9205-
if (constantInitializer != null) {
9193+
if (constantInitializer2 != null) {
92069194
return super.evaluationResult;
92079195
}
92089196

@@ -9285,7 +9273,7 @@ class SuperFormalParameterElementImpl extends FormalParameterElementImpl
92859273

92869274
@override
92879275
DartObject? computeConstantValue() {
9288-
if (constantInitializer != null) {
9276+
if (constantInitializer2 != null) {
92899277
return super.computeConstantValue();
92909278
}
92919279

@@ -10306,22 +10294,28 @@ abstract class VariableElementImpl extends ElementImpl
1030610294
implements VariableElement2OrMember, ConstantEvaluationTarget {
1030710295
ConstantInitializerImpl? _constantInitializer;
1030810296

10309-
/// The result of evaluating [constantInitializer].
10297+
/// The result of evaluating [constantInitializer2].
1031010298
///
10311-
/// Is `null` if [constantInitializer] is `null`, or if the value could not
10299+
/// Is `null` if [constantInitializer2] is `null`, or if the value could not
1031210300
/// be computed because of errors.
1031310301
Constant? evaluationResult;
1031410302

1031510303
@override
10316-
ConstantInitializerImpl? get constantInitializer {
10304+
ExpressionImpl? get constantInitializer {
10305+
return constantInitializer2?.expression;
10306+
}
10307+
10308+
// TODO(scheglov): remove this
10309+
ConstantInitializerImpl? get constantInitializer2 {
1031710310
if (_constantInitializer case var result?) {
1031810311
return result;
1031910312
}
1032010313

1032110314
for (var fragment in fragments.reversed) {
10315+
fragment as VariableFragmentImpl;
1032210316
if (fragment.initializer case ExpressionImpl expression) {
1032310317
return _constantInitializer = ConstantInitializerImpl(
10324-
fragment: fragment as VariableFragmentImpl,
10318+
fragment: fragment,
1032510319
expression: expression,
1032610320
);
1032710321
}
@@ -10330,12 +10324,6 @@ abstract class VariableElementImpl extends ElementImpl
1033010324
return null;
1033110325
}
1033210326

10333-
@Deprecated('Use constantInitializer instead')
10334-
@override
10335-
ConstantInitializer? get constantInitializer2 {
10336-
return constantInitializer;
10337-
}
10338-
1033910327
@override
1034010328
bool get isConstantEvaluated => evaluationResult != null;
1034110329

@@ -10425,7 +10413,7 @@ abstract class VariableFragmentImpl extends FragmentImpl
1042510413
setModifier(Modifier.IMPLICIT_TYPE, hasImplicitType);
1042610414
}
1042710415

10428-
@override
10416+
// TODO(scheglov): remove this
1042910417
ExpressionImpl? get initializer {
1043010418
return constantInitializer;
1043110419
}

pkg/analyzer/lib/src/dart/element/member.dart

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:analyzer/dart/constant/value.dart';
77
import 'package:analyzer/dart/element/element.dart';
88
import 'package:analyzer/dart/element/nullability_suffix.dart';
99
import 'package:analyzer/dart/element/type.dart';
10+
import 'package:analyzer/src/dart/ast/ast.dart';
1011
import 'package:analyzer/src/dart/element/display_string_builder.dart';
1112
import 'package:analyzer/src/dart/element/element.dart';
1213
import 'package:analyzer/src/dart/element/type.dart';
@@ -1255,16 +1256,10 @@ abstract class VariableMember extends Member
12551256
super.baseElement as VariableElementImpl;
12561257

12571258
@override
1258-
ConstantInitializer? get constantInitializer {
1259+
ExpressionImpl? get constantInitializer {
12591260
return baseElement.constantInitializer;
12601261
}
12611262

1262-
@Deprecated('Use constantInitializer instead')
1263-
@override
1264-
ConstantInitializer? get constantInitializer2 {
1265-
return constantInitializer;
1266-
}
1267-
12681263
@override
12691264
bool get hasImplicitType => baseElement.hasImplicitType;
12701265

0 commit comments

Comments
 (0)