// Copyright (c) 201, 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 // // Dart test program testing assert statements. import "package:expect/expect.dart"; class S { const S(); const S.named(); } class C extends S { final int x; C.cc01(int x) : x = x, super(); C.cc02(int x) : x = x, super.named(); C.cc03(this.x) : super(); C.cc04(this.x) : super.named(); C.cc05(int x) : x = x, assert(x == x), super(); C.cc06(int x) : x = x, assert(x == x), super.named(); C.cc07(this.x) : assert(x == x), super(); C.cc08(this.x) : assert(x == x), super.named(); C.cc09(int x) : // super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x; //^ // [cfe] Can't have initializers after 'super'. C.cc10(int x) : // super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x; //^ // [cfe] Can't have initializers after 'super'. C.cc11(this.x) : // super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. C.cc12(this.x) : // super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. C.cc13(int x) : // super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x, //^ // [cfe] Can't have initializers after 'super'. assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. C.cc14(int x) : // super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x, //^ // [cfe] Can't have initializers after 'super'. assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. C.cc15(int x) : x = x, super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. C.cc16(int x) : x = x, super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. const C.cc17(int x) : x = x, super(); const C.cc18(int x) : x = x, super.named(); const C.cc19(this.x) : super(); const C.cc20(this.x) : super.named(); const C.cc21(int x) : x = x, assert(x == x), super(); const C.cc22(int x) : x = x, assert(x == x), super.named(); const C.cc23(this.x) : assert(x == x), super(); const C.cc24(this.x) : assert(x == x), super.named(); const C.cc25(int x) : // super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x; //^ // [cfe] Can't have initializers after 'super'. const C.cc26(int x) : // super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x; //^ // [cfe] Can't have initializers after 'super'. const C.cc27(this.x) : // super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. const C.cc28(this.x) : // super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. const C.cc29(int x) : // super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x, //^ // [cfe] Can't have initializers after 'super'. assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. const C.cc30(int x) : // super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION x = x, //^ // [cfe] Can't have initializers after 'super'. assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. const C.cc31(int x) : x = x, super(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. const C.cc32(int x) : x = x, super.named(), // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.INVALID_SUPER_INVOCATION assert(x == x); // ^ // [cfe] Can't have initializers after 'super'. } main() { // Ensure that erroneous constructors are actually needed. new C.cc01(42); new C.cc02(42); new C.cc03(42); new C.cc04(42); new C.cc05(42); new C.cc06(42); new C.cc07(42); new C.cc08(42); new C.cc09(42); new C.cc10(42); new C.cc11(42); new C.cc12(42); new C.cc13(42); new C.cc14(42); new C.cc15(42); new C.cc16(42); const C.cc17(42); const C.cc18(42); const C.cc19(42); const C.cc20(42); const C.cc21(42); const C.cc22(42); const C.cc23(42); const C.cc24(42); const C.cc25(42); const C.cc26(42); const C.cc27(42); const C.cc28(42); const C.cc29(42); const C.cc30(42); const C.cc31(42); const C.cc32(42); }