// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// dart2jsOptions=-O0

// @dart = 2.7

// Regression test for issue 42891. The root cause was a malformed SSA due to
// generating a dynamic entry point argument test for an elided parameter
// directly on the HLocalValue , which should only be an operand to HLocalGet
// and HLocalSet.

import "package:expect/expect.dart";

class CCC {
  void foo([num x = 123]) {
    try {
      Expect.equals(123, x);
      x = 0;
    } finally {
      Expect.equals(0, x);
    }
  }

  void bar([num x = 456]) {
    try {
      Expect.equals(123, x);
      x = 0;
    } finally {
      Expect.equals(0, x);
    }
  }
}

void main() {
  CCC().foo();
  CCC().bar(123);
}
