// 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. // @dart = 2.7 /// This file contains tests of assertions when assertions are _disabled_. The /// file 'assert_message_throw_ea.dart' contains similar tests for when /// assertions are _enabled_. /*member: main:[null]*/ main(/*[null|subclass=Object]*/ args) { test0(); test1(args == null); test2(args == null); test3(args); } // Check that `throw` in the message is handled conditionally. /*member: test0:Container([exact=JSExtendableArray], element: [empty], length: 0)*/ test0() { assert(true, throw "unreachable"); var list = []; return list; } // Check that side-effects of the assert message is not included after the // assert. /*member: test1:[null]*/ test1(/*[exact=JSBool]*/ b) { var a; assert(b, a = 42); return a; } // Check that side-effects of the assert message is included after the assert // through the thrown exception. /*member: test2:[null]*/ test2(/*[exact=JSBool]*/ b) { var a; try { assert(b, a = 42); } catch (e) {} return a; } // Check that type tests are preserved after the assert. /*member: test3:[null|subclass=Object]*/ test3(/*[null|subclass=Object]*/ a) { assert(a is int); return a; }