mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 01:45:06 +00:00
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>
This commit is contained in:
parent
b46077332b
commit
f504d61c96
|
@ -2716,6 +2716,8 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
|||
} else {
|
||||
variable.initializer = initializer..parent = variable;
|
||||
}
|
||||
} else if (kind != FormalParameterKind.mandatory) {
|
||||
variable.initializer ??= forest.literalNull(null)..parent = variable;
|
||||
}
|
||||
if (annotations != null) {
|
||||
if (functionNestingLevel == 0) {
|
||||
|
|
|
@ -1381,19 +1381,12 @@ abstract class TypeInferrerImpl extends TypeInferrer {
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue