// Copyright (c) 2013, 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. import "package:expect/expect.dart"; // Regression test for Issue 12320, Issue 12363. String log = ''; int? x; void main() { (run)(run); // The little dance with passing [run] as an argument to confuse the optimizer // so that [run] is not inlined. If [run] is inlined, the bug (Issue 12320) // eliminates the following 'Expect', making the test appear to pass! Expect.equals('[Foo][Foo 1][Bar][Foo][Foo 0]', log); } void run(f) { if (f is! int) { f(1); } else { x = f; callFoo(); x = 2; callBar(); callFoo(); } } void callFoo() { log += '[Foo]'; switch (x) { case 0: log += '[Foo 0]'; break; case 1: log += '[Foo 1]'; break; default: throw 'invalid x'; } } void callBar() { log += '[Bar]'; x = 0; }