| // Copyright (c) 2017, 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=--assert_initializer |
| // |
| // Dart test program testing assert statements. |
| |
| import "package:expect/expect.dart"; |
| |
| class C { |
| static bool staticTrue() => true; |
| final int x; |
| const C(this.x); |
| // The expression *is* a compile-time constant, but not a bool value. |
| // Static warning, assertion throws which makes it a compile-time error. |
| const C.bc02(this.x, y) |
| : assert(staticTrue) //# 01: static type warning |
| ; |
| } |
| |
| |
| main() { |
| // Assertion fails, so in checked mode it's a compile-time error. |
| // Production mode will succeed because the assertion isn't evaluated. |
| var c = const C(1); |
| c = const C.bc02(1, 2); //# 01: compile-time error |
| if (c.x != 1) throw "non-trivial use of c"; |
| Expect.identical(const C(1), c); |
| } |