// Copyright (c) 2014, 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.

// @dart = 2.9

// Regression test for dart2js bug 18257: Properly infer types for forwarding
// factory constructors with optional parameters with default values.

main() {
  A a = new A.a1();
  a.test();
}

class A {
  final bool condition;

  A({this.condition: true});

  factory A.a1({condition}) = _A1.boo;

  test() {
    if (condition != true) {
      throw "FAILED";
    }
  }
}

class _A1 extends A {
  _A1.boo({condition: true}) : super(condition: condition);
}
