Skip to content

Commit 4435bb5

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Remove DefaultParameterFragmentImpl.
Change-Id: I5fcfb0dedb634e052024fe3a41a704501a022f81 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/437583 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 8156563 commit 4435bb5

File tree

17 files changed

+94
-216
lines changed

17 files changed

+94
-216
lines changed

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ testFineAfterLibraryAnalyzerHook;
110110
// TODO(scheglov): Clean up the list of implicitly analyzed files.
111111
class AnalysisDriver {
112112
/// The version of data format, should be incremented on every format change.
113-
static const int DATA_VERSION = 483;
113+
static const int DATA_VERSION = 484;
114114

115115
/// The number of exception contexts allowed to write. Once this field is
116116
/// zero, we stop writing any new exception contexts in this process.

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import 'package:analyzer/dart/ast/token.dart';
1010
import 'package:analyzer/dart/ast/visitor.dart';
1111
import 'package:analyzer/exception/exception.dart';
1212
import 'package:analyzer/src/dart/ast/ast.dart';
13-
import 'package:analyzer/src/dart/element/element.dart';
1413
import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
1514

1615
export 'package:analyzer/src/dart/ast/constant_evaluator.dart';
@@ -546,11 +545,7 @@ class NodeReplacer extends ThrowingAstVisitor<bool> {
546545
} else if (identical(node.defaultValue, _oldNode)) {
547546
node.defaultValue = _newNode as ExpressionImpl;
548547
var parameterElement = node.declaredFragment;
549-
if (parameterElement is DefaultParameterFragmentImpl) {
550-
parameterElement.constantInitializer = _newNode;
551-
} else if (parameterElement is DefaultFieldFormalParameterElementImpl) {
552-
parameterElement.constantInitializer = _newNode;
553-
}
548+
parameterElement?.constantInitializer = _newNode;
554549
return true;
555550
}
556551
return visitNode(node);

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

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -93,24 +93,22 @@ class ConstantEvaluationEngine {
9393

9494
var library = constant.library as LibraryElementImpl;
9595
if (constant is FormalParameterFragmentImpl) {
96-
if (constant is ConstVariableFragment) {
97-
var defaultValue = constant.constantInitializer;
98-
if (defaultValue != null) {
99-
var diagnosticListener = RecordingDiagnosticListener();
100-
var diagnosticReporter = DiagnosticReporter(
101-
diagnosticListener,
102-
constant.source!,
103-
);
104-
var constantVisitor = ConstantVisitor(
105-
this,
106-
library,
107-
diagnosticReporter,
108-
);
109-
var dartConstant = constantVisitor.evaluateConstant(defaultValue);
110-
constant.evaluationResult = dartConstant;
111-
} else {
112-
constant.evaluationResult = _nullObject(library);
113-
}
96+
var defaultValue = constant.constantInitializer;
97+
if (defaultValue != null) {
98+
var diagnosticListener = RecordingDiagnosticListener();
99+
var diagnosticReporter = DiagnosticReporter(
100+
diagnosticListener,
101+
constant.source!,
102+
);
103+
var constantVisitor = ConstantVisitor(
104+
this,
105+
library,
106+
diagnosticReporter,
107+
);
108+
var dartConstant = constantVisitor.evaluateConstant(defaultValue);
109+
constant.evaluationResult = dartConstant;
110+
} else {
111+
constant.evaluationResult = _nullObject(library);
114112
}
115113
} else if (constant is VariableFragmentImpl) {
116114
var constantInitializer = constant.constantInitializer;

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,10 +198,9 @@ class ConstantFinder extends RecursiveAstVisitor<void> {
198198
!element.isStatic)) {
199199
constantsToCompute.add(element);
200200
// Fill error nodes.
201-
if (element is ConstVariableFragment) {
202-
var constElement = element as ConstVariableFragment;
201+
if (element.constantInitializer case var constantInitializer?) {
203202
configuration.addErrorNode(
204-
fromElement: constElement.constantInitializer,
203+
fromElement: constantInitializer,
205204
fromAst: node.initializer,
206205
);
207206
}

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

Lines changed: 12 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -481,24 +481,17 @@ class ClassElementImpl extends InterfaceElementImpl implements ClassElement {
481481
var formalParameterElements = <FormalParameterElementImpl>[];
482482
var superInvocationArguments = <ExpressionImpl>[];
483483
for (var superFormalParameter in superConstructor.formalParameters) {
484-
FormalParameterFragmentImpl formalParameterFragment;
485-
if (superFormalParameter.firstFragment
486-
case ConstVariableFragment constVariable) {
487-
// TODO(scheglov): Maybe stop making this distinction
488-
formalParameterFragment = DefaultParameterFragmentImpl(
484+
var formalParameterFragment = FormalParameterFragmentImpl(
489485
nameOffset: -1,
490486
name2: superFormalParameter.name3,
491487
nameOffset2: null,
492488
parameterKind: superFormalParameter.parameterKind,
493-
)..constantInitializer = constVariable.constantInitializer;
494-
} else {
495-
formalParameterFragment = FormalParameterFragmentImpl(
496-
nameOffset: -1,
497-
name2: superFormalParameter.name3,
498-
nameOffset2: null,
499-
parameterKind: superFormalParameter.parameterKind,
500-
);
501-
}
489+
)
490+
..constantInitializer =
491+
superFormalParameter
492+
.baseElement
493+
.firstFragment
494+
.constantInitializer;
502495

503496
formalParameterFragment.isConst = superFormalParameter.isConst;
504497
formalParameterFragment.isFinal = superFormalParameter.isFinal;
@@ -1178,10 +1171,7 @@ mixin ConstVariableFragment implements FragmentImpl, ConstantEvaluationTarget {
11781171
var library = this.library;
11791172
// TODO(scheglov): https://github.com/dart-lang/sdk/issues/47915
11801173
if (library == null) {
1181-
throw StateError(
1182-
'[library: null][this: ($runtimeType) $this]'
1183-
'[enclosingElement: $enclosingElement3]',
1184-
);
1174+
return null;
11851175
}
11861176
computeConstants(
11871177
declaredVariables: context.declaredVariables,
@@ -1217,24 +1207,6 @@ class DefaultFieldFormalParameterElementImpl
12171207
}
12181208
}
12191209

1220-
/// A [FormalParameterFragmentImpl] for parameters that have an initializer.
1221-
class DefaultParameterFragmentImpl extends FormalParameterFragmentImpl
1222-
with ConstVariableFragment {
1223-
/// Initialize a newly created parameter element to have the given [name] and
1224-
/// [nameOffset].
1225-
DefaultParameterFragmentImpl({
1226-
required super.nameOffset,
1227-
required super.name2,
1228-
required super.nameOffset2,
1229-
required super.parameterKind,
1230-
});
1231-
1232-
@override
1233-
String? get defaultValueCode {
1234-
return constantInitializer?.toSource();
1235-
}
1236-
}
1237-
12381210
class DefaultSuperFormalParameterElementImpl
12391211
extends SuperFormalParameterFragmentImpl
12401212
with ConstVariableFragment {
@@ -3424,7 +3396,9 @@ class FormalParameterFragmentImpl extends VariableFragmentImpl
34243396
FormalParameterFragmentImpl get declaration => this;
34253397

34263398
@override
3427-
String? get defaultValueCode => null;
3399+
String? get defaultValueCode {
3400+
return constantInitializer?.toSource();
3401+
}
34283402

34293403
@override
34303404
FormalParameterElementImpl get element {
@@ -10387,6 +10361,7 @@ abstract class VariableElementOrMember
1038710361
}
1038810362

1038910363
abstract class VariableFragmentImpl extends FragmentImpl
10364+
with ConstVariableFragment
1039010365
implements
1039110366
VariableElementOrMember,
1039210367
AnnotatableFragmentImpl,
@@ -10398,15 +10373,6 @@ abstract class VariableFragmentImpl extends FragmentImpl
1039810373
/// [offset].
1039910374
VariableFragmentImpl({required super.nameOffset});
1040010375

10401-
/// If this element represents a constant variable, and it has an initializer,
10402-
/// a copy of the initializer for the constant. Otherwise `null`.
10403-
///
10404-
/// Note that in correct Dart code, all constant variables must have
10405-
/// initializers. However, analyzer also needs to handle incorrect Dart code,
10406-
/// in which case there might be some constant variables that lack
10407-
/// initializers.
10408-
ExpressionImpl? get constantInitializer => null;
10409-
1041010376
@override
1041110377
VariableFragmentImpl get declaration => this;
1041210378

@@ -10416,18 +10382,6 @@ abstract class VariableFragmentImpl extends FragmentImpl
1041610382
@override
1041710383
VariableElementImpl get element;
1041810384

10419-
/// Return the result of evaluating this variable's initializer as a
10420-
/// compile-time constant expression, or `null` if this variable is not a
10421-
/// 'const' variable, if it does not have an initializer, or if the
10422-
/// compilation unit containing the variable has not been resolved.
10423-
Constant? get evaluationResult => null;
10424-
10425-
/// Set the result of evaluating this variable's initializer as a compile-time
10426-
/// constant expression to the given [result].
10427-
set evaluationResult(Constant? result) {
10428-
throw StateError("Invalid attempt to set a compile-time constant result");
10429-
}
10430-
1043110385
@override
1043210386
bool get hasImplicitType {
1043310387
return hasModifier(Modifier.IMPLICIT_TYPE);
@@ -10458,9 +10412,6 @@ abstract class VariableFragmentImpl extends FragmentImpl
1045810412
setModifier(Modifier.CONST, isConst);
1045910413
}
1046010414

10461-
@override
10462-
bool get isConstantEvaluated => true;
10463-
1046410415
/// Set whether this variable is external.
1046510416
set isExternal(bool isExternal) {
1046610417
setModifier(Modifier.EXTERNAL, isExternal);
@@ -10502,9 +10453,6 @@ abstract class VariableFragmentImpl extends FragmentImpl
1050210453
void appendTo(ElementDisplayStringBuilder builder) {
1050310454
builder.writeVariableElement(this);
1050410455
}
10505-
10506-
@override
10507-
DartObject? computeConstantValue() => null;
1050810456
}
1050910457

1051010458
mixin WrappedElementMixin implements ElementImpl {

pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
459459
nameOffset2: nameOffset2,
460460
)..constantInitializer = node.defaultValue;
461461
} else {
462-
fragment = DefaultParameterFragmentImpl(
462+
fragment = FormalParameterFragmentImpl(
463463
nameOffset: nameOffset2 ?? -1,
464464
parameterKind: node.kind,
465465
name2: name2,

pkg/analyzer/lib/src/generated/resolver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2392,7 +2392,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
23922392
popRewrite();
23932393
}
23942394

2395-
if (fragment is DefaultParameterFragmentImpl && node.isOfLocalFunction) {
2395+
if (node.isOfLocalFunction) {
23962396
fragment.constantInitializer = defaultValue;
23972397
}
23982398
}

pkg/analyzer/lib/src/summary2/ast_binary_reader.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ class AstBinaryReader {
450450
);
451451

452452
var nonDefaultElement = parameter.declaredFragment!;
453-
var fragment = DefaultParameterFragmentImpl(
453+
var fragment = FormalParameterFragmentImpl(
454454
nameOffset: nonDefaultElement.nameOffset,
455455
name2: nonDefaultElement.name2,
456456
nameOffset2: nonDefaultElement.nameOffset2,

0 commit comments

Comments
 (0)