@@ -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
0 commit comments