[tfa] Ignore missing optional parameters after global optimizations.
TFA currently sets parameter defaults to null when the parameter is unused. The kernel verifier tries to verify that no parameter initializers are null. This causes assertions to fail in dart2wasm when we run the verifier after TFA. Change-Id: I4e44eca2398b7266f6cb3bbf200009e73e64cbf4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/479321 Reviewed-by: Alexander Markov <alexmarkov@google.com> Commit-Queue: Nate Biggs <natebiggs@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
@@ -911,7 +911,10 @@ class VerifyingVisitor extends RecursiveResultVisitor<void> {
|
||||
if (positionalIndex >= node.requiredParameterCount) {
|
||||
VariableDeclaration positionalParameter =
|
||||
node.positionalParameters[positionalIndex];
|
||||
if (positionalParameter.initializer == null) {
|
||||
if (positionalParameter.initializer == null &&
|
||||
// Global transformations like TFA may not maintain this
|
||||
// invariant.
|
||||
stage != VerificationStage.afterGlobalTransformations) {
|
||||
problem(
|
||||
positionalParameter,
|
||||
"An optional positional parameter is expected to have a "
|
||||
@@ -921,7 +924,10 @@ class VerifyingVisitor extends RecursiveResultVisitor<void> {
|
||||
}
|
||||
for (VariableDeclaration namedParameter in node.namedParameters) {
|
||||
if (!namedParameter.isRequired &&
|
||||
namedParameter.initializer == null) {
|
||||
namedParameter.initializer == null &&
|
||||
// Global transformations like TFA may not maintain this
|
||||
// invariant.
|
||||
stage != VerificationStage.afterGlobalTransformations) {
|
||||
problem(
|
||||
namedParameter,
|
||||
"An optional named parameter is expected to have a default "
|
||||
|
||||
Reference in New Issue
Block a user