Skip to content

Commit 4e5b1cf

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Remove DefaultFieldFormalParameterElementImpl and DefaultSuperFormalParameterElementImpl.
Change-Id: Ib9b66bf972dfadb94cafaa14389f4be1cbcf8522 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/437585 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 4435bb5 commit 4e5b1cf

File tree

6 files changed

+123
-191
lines changed

6 files changed

+123
-191
lines changed

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

Lines changed: 64 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,102 +1188,6 @@ mixin ConstVariableFragment implements FragmentImpl, ConstantEvaluationTarget {
11881188
}
11891189
}
11901190

1191-
/// A [FieldFormalParameterFragmentImpl] for parameters that have an initializer.
1192-
class DefaultFieldFormalParameterElementImpl
1193-
extends FieldFormalParameterFragmentImpl
1194-
with ConstVariableFragment {
1195-
/// Initialize a newly created parameter element to have the given [name] and
1196-
/// [nameOffset].
1197-
DefaultFieldFormalParameterElementImpl({
1198-
required super.nameOffset,
1199-
required super.name2,
1200-
required super.nameOffset2,
1201-
required super.parameterKind,
1202-
});
1203-
1204-
@override
1205-
String? get defaultValueCode {
1206-
return constantInitializer?.toSource();
1207-
}
1208-
}
1209-
1210-
class DefaultSuperFormalParameterElementImpl
1211-
extends SuperFormalParameterFragmentImpl
1212-
with ConstVariableFragment {
1213-
/// Initialize a newly created parameter element to have the given [name] and
1214-
/// [nameOffset].
1215-
DefaultSuperFormalParameterElementImpl({
1216-
required super.nameOffset,
1217-
required super.name2,
1218-
required super.nameOffset2,
1219-
required super.parameterKind,
1220-
});
1221-
1222-
@override
1223-
String? get defaultValueCode {
1224-
if (isRequired) {
1225-
return null;
1226-
}
1227-
1228-
var constantInitializer = this.constantInitializer;
1229-
if (constantInitializer != null) {
1230-
return constantInitializer.toSource();
1231-
}
1232-
1233-
if (_superConstructorParameterDefaultValue != null) {
1234-
return superConstructorParameter?.defaultValueCode;
1235-
}
1236-
1237-
return null;
1238-
}
1239-
1240-
@override
1241-
Constant? get evaluationResult {
1242-
if (constantInitializer != null) {
1243-
return super.evaluationResult;
1244-
}
1245-
1246-
var superConstructorParameter = this.superConstructorParameter?.baseElement;
1247-
if (superConstructorParameter is FormalParameterElementImpl) {
1248-
return superConstructorParameter.firstFragment.evaluationResult;
1249-
}
1250-
1251-
return null;
1252-
}
1253-
1254-
DartObject? get _superConstructorParameterDefaultValue {
1255-
var superDefault = superConstructorParameter?.computeConstantValue();
1256-
if (superDefault == null) {
1257-
return null;
1258-
}
1259-
1260-
// TODO(scheglov): eliminate this cast
1261-
superDefault as DartObjectImpl;
1262-
var superDefaultType = superDefault.type;
1263-
1264-
var typeSystem = library?.typeSystem;
1265-
if (typeSystem == null) {
1266-
return null;
1267-
}
1268-
1269-
var requiredType = type.extensionTypeErasure;
1270-
if (typeSystem.isSubtypeOf(superDefaultType, requiredType)) {
1271-
return superDefault;
1272-
}
1273-
1274-
return null;
1275-
}
1276-
1277-
@override
1278-
DartObject? computeConstantValue() {
1279-
if (constantInitializer != null) {
1280-
return super.computeConstantValue();
1281-
}
1282-
1283-
return _superConstructorParameterDefaultValue;
1284-
}
1285-
}
1286-
12871191
/// This mixin is used to set up loading class members from summaries only when
12881192
/// they are requested. The summary reader uses [deferReadMembers], and
12891193
/// getters invoke [ensureReadMembers].
@@ -9256,10 +9160,42 @@ class SuperFormalParameterFragmentImpl extends FormalParameterFragmentImpl
92569160
required super.parameterKind,
92579161
});
92589162

9163+
@override
9164+
String? get defaultValueCode {
9165+
if (isRequired) {
9166+
return null;
9167+
}
9168+
9169+
var constantInitializer = this.constantInitializer;
9170+
if (constantInitializer != null) {
9171+
return constantInitializer.toSource();
9172+
}
9173+
9174+
if (_superConstructorParameterDefaultValue != null) {
9175+
return superConstructorParameter?.defaultValueCode;
9176+
}
9177+
9178+
return null;
9179+
}
9180+
92599181
@override
92609182
SuperFormalParameterElementImpl get element =>
92619183
super.element as SuperFormalParameterElementImpl;
92629184

9185+
@override
9186+
Constant? get evaluationResult {
9187+
if (constantInitializer != null) {
9188+
return super.evaluationResult;
9189+
}
9190+
9191+
var superConstructorParameter = this.superConstructorParameter?.baseElement;
9192+
if (superConstructorParameter is FormalParameterElementImpl) {
9193+
return superConstructorParameter.firstFragment.evaluationResult;
9194+
}
9195+
9196+
return null;
9197+
}
9198+
92639199
/// Super parameters are visible only in the initializer list scope,
92649200
/// and introduce final variables.
92659201
@override
@@ -9306,6 +9242,38 @@ class SuperFormalParameterFragmentImpl extends FormalParameterFragmentImpl
93069242
return null;
93079243
}
93089244

9245+
DartObject? get _superConstructorParameterDefaultValue {
9246+
var superDefault = superConstructorParameter?.computeConstantValue();
9247+
if (superDefault == null) {
9248+
return null;
9249+
}
9250+
9251+
// TODO(scheglov): eliminate this cast
9252+
superDefault as DartObjectImpl;
9253+
var superDefaultType = superDefault.type;
9254+
9255+
var typeSystem = library?.typeSystem;
9256+
if (typeSystem == null) {
9257+
return null;
9258+
}
9259+
9260+
var requiredType = type.extensionTypeErasure;
9261+
if (typeSystem.isSubtypeOf(superDefaultType, requiredType)) {
9262+
return superDefault;
9263+
}
9264+
9265+
return null;
9266+
}
9267+
9268+
@override
9269+
DartObject? computeConstantValue() {
9270+
if (constantInitializer != null) {
9271+
return super.computeConstantValue();
9272+
}
9273+
9274+
return _superConstructorParameterDefaultValue;
9275+
}
9276+
93099277
/// Return the index of this super-formal parameter among other super-formals.
93109278
int indexIn(ConstructorFragmentImpl enclosingElement) {
93119279
return enclosingElement.parameters

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -444,15 +444,15 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
444444
var nameOffset2 = nameToken?.offset;
445445
if (node.parameter is FieldFormalParameter) {
446446
// Only for recovery, this should not happen in valid code.
447-
fragment = DefaultFieldFormalParameterElementImpl(
447+
fragment = FieldFormalParameterFragmentImpl(
448448
nameOffset: nameOffset2 ?? -1,
449449
parameterKind: node.kind,
450450
name2: name2,
451451
nameOffset2: nameOffset2,
452452
)..constantInitializer = node.defaultValue;
453453
} else if (node.parameter is SuperFormalParameter) {
454454
// Only for recovery, this should not happen in valid code.
455-
fragment = DefaultSuperFormalParameterElementImpl(
455+
fragment = SuperFormalParameterFragmentImpl(
456456
nameOffset: nameOffset2 ?? -1,
457457
parameterKind: node.kind,
458458
name2: name2,

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,14 +1052,14 @@ class LibraryReader {
10521052

10531053
FormalParameterFragmentImpl element;
10541054
if (isInitializingFormal) {
1055-
element = DefaultFieldFormalParameterElementImpl(
1055+
element = FieldFormalParameterFragmentImpl(
10561056
nameOffset: -1,
10571057
name2: fragmentName,
10581058
nameOffset2: null,
10591059
parameterKind: kind,
10601060
);
10611061
} else if (isSuperFormal) {
1062-
element = DefaultSuperFormalParameterElementImpl(
1062+
element = SuperFormalParameterFragmentImpl(
10631063
nameOffset: -1,
10641064
name2: fragmentName,
10651065
nameOffset2: null,
@@ -1776,7 +1776,7 @@ class ResolutionReader {
17761776
var name = _readFragmentName();
17771777
FormalParameterFragmentImpl element;
17781778
if (isInitializingFormal) {
1779-
element = DefaultFieldFormalParameterElementImpl(
1779+
element = FieldFormalParameterFragmentImpl(
17801780
nameOffset: -1,
17811781
name2: name,
17821782
nameOffset2: null,

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ class DefaultValueResolver {
4141
FormalParameterFragmentImpl element,
4242
) {
4343
var node = _linker.getLinkingNode(element);
44-
if (node is DefaultFormalParameterImpl && node.defaultValue != null) {
45-
return node;
46-
} else {
47-
return null;
44+
if (node?.parent case DefaultFormalParameterImpl defaultParent) {
45+
if (defaultParent.defaultValue != null) {
46+
return defaultParent;
47+
}
4848
}
49+
return null;
4950
}
5051

5152
void _executable(_Context context, ExecutableFragmentImpl element) {

0 commit comments

Comments
 (0)