// Copyright (c) 2018, 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.
// VMOptions=--enable-asserts
// dart2jsOptions=--enable-asserts
//
// Test of asserts in initializer lists.

import "package:expect/expect.dart";

class C {
  final int x;
  // Const constructors.
  const C.cc01(this.x, y) : assert(x < y);
  const C.cc02(x, y)
      : x = x,
        assert(x < y);
  const C.cc03(x, y)
      : assert(x < y),
        x = x;
  const C.cc04(this.x, y)
      : assert(x < y),
        super();
  const C.cc05(x, y)
      : x = x,
        assert(x < y),
        super();
  const C.cc06(x, y)
      : assert(x < y),
        x = x,
        super();
  const C.cc07(x, y)
      : assert(x < y),
        x = x,
        assert(y > x),
        super();
  const C.cc08(this.x, y) : assert(x < y, "$x < $y");
  const C.cc09(this.x, y) : assert(x < y,);
  const C.cc10(this.x, y) : assert(x < y, "$x < $y",);
}

main() {
  const x = 3;
  {
    const x = 1; //# cc01: compile-time error
    const C.cc01(2, x);
  }
  {
    const x = 1; //# cc02: compile-time error
    const C.cc02(2, x);
  }
  {
    const x = 1; //# cc03: compile-time error
    const C.cc03(2, x);
  }
  {
    const x = 1; //# cc04: compile-time error
    const C.cc04(2, x);
  }
  {
    const x = 1; //# cc05: compile-time error
    const C.cc05(2, x);
  }
  {
    const x = 1; //# cc06: compile-time error
    const C.cc06(2, x);
  }
  {
    const x = 1; //# cc07: compile-time error
    const C.cc07(2, x);
  }
  {
    const x = 1; //# cc08: compile-time error
    const C.cc08(2, x);
  }
  {
    const x = 1; //# cc09: compile-time error
    const C.cc09(2, x);
  }
  {
    const x = 1; //# cc10: compile-time error
    const C.cc10(2, x);
  }
}
