Generate optional parameter initializers in BodyBuilder
Change-Id: I3f33c660e25564dbdf907d6331cf391537113549
Reviewed-on: https://dart-review.googlesource.com/c/86341
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index e9bbdab..25bcd5d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -2716,6 +2716,8 @@
} else {
variable.initializer = initializer..parent = variable;
}
+ } else if (kind != FormalParameterKind.mandatory) {
+ variable.initializer ??= forest.literalNull(null)..parent = variable;
}
if (annotations != null) {
if (functionNestingLevel == 0) {
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index ec3c1f1..f32111d 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -1381,19 +1381,12 @@
for (var i = 0; i < positionalParameters.length; i++) {
var parameter = positionalParameters[i];
inferMetadataKeepingHelper(parameter.annotations);
- if (i >= function.requiredParameterCount &&
- parameter.initializer == null) {
- parameter.initializer = new NullLiteral()..parent = parameter;
- }
if (parameter.initializer != null) {
inferExpression(parameter.initializer, parameter.type, !isTopLevel);
}
}
for (var parameter in function.namedParameters) {
inferMetadataKeepingHelper(parameter.annotations);
- if (parameter.initializer == null) {
- parameter.initializer = new NullLiteral()..parent = parameter;
- }
inferExpression(parameter.initializer, parameter.type, !isTopLevel);
}
}