| // 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. |
| |
| // @dart = 2.7 |
| |
| /*member: main:[null]*/ |
| main() { |
| breakInWhile(); |
| noBreakInWhile(); |
| continueInWhile(); |
| noContinueInWhile(); |
| breakInIf(); |
| noBreakInIf(); |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // A break statement in a while loop. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: _breakInWhile:Union([exact=JSString], [exact=JSUInt31])*/ |
| _breakInWhile(/*[exact=JSBool]*/ b) { |
| dynamic local = 42; |
| while (b) { |
| if (b) { |
| local = ''; |
| break; |
| } |
| local = 0; |
| } |
| return local; |
| } |
| |
| /*member: breakInWhile:[null]*/ |
| breakInWhile() { |
| _breakInWhile(true); |
| _breakInWhile(false); |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // The while loop above _without_ the break statement. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: _noBreakInWhile:[exact=JSUInt31]*/ |
| _noBreakInWhile(/*[exact=JSBool]*/ b) { |
| dynamic local = 42; |
| while (b) { |
| if (b) { |
| local = ''; |
| } |
| local = 0; |
| } |
| return local; |
| } |
| |
| /*member: noBreakInWhile:[null]*/ |
| noBreakInWhile() { |
| _noBreakInWhile(true); |
| _noBreakInWhile(false); |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // A continue statement in a while loop. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: _continueInWhile:Union([exact=JSString], [exact=JSUInt31])*/ |
| _continueInWhile(/*[exact=JSBool]*/ b) { |
| dynamic local = 42; |
| while (b) { |
| local /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ + null; |
| if (b) { |
| local = ''; |
| continue; |
| } |
| local = 0; |
| } |
| return local; |
| } |
| |
| /*member: continueInWhile:[null]*/ |
| continueInWhile() { |
| _continueInWhile(true); |
| _continueInWhile(false); |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // The while loop above _without_ the continue statement. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: _noContinueInWhile:[exact=JSUInt31]*/ |
| _noContinueInWhile(/*[exact=JSBool]*/ b) { |
| dynamic local = 42; |
| while (b) { |
| local /*invoke: [exact=JSUInt31]*/ + null; |
| if (b) { |
| local = ''; |
| } |
| local = 0; |
| } |
| return local; |
| } |
| |
| /*member: noContinueInWhile:[null]*/ |
| noContinueInWhile() { |
| _noContinueInWhile(true); |
| _noContinueInWhile(false); |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // A break statement in a labeled statement. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: _breakInIf:Union([exact=JSString], [exact=JSUInt31])*/ |
| _breakInIf(/*[exact=JSBool]*/ b) { |
| dynamic local = 42; |
| label: |
| { |
| local = ''; |
| if (b) { |
| break label; |
| } |
| local = 0; |
| } |
| return local; |
| } |
| |
| /*member: breakInIf:[null]*/ |
| breakInIf() { |
| _breakInIf(true); |
| _breakInIf(false); |
| } |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // The "labeled statement" above _without_ the break statement. |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /*member: _noBreakInIf:[exact=JSUInt31]*/ |
| _noBreakInIf(/*[exact=JSBool]*/ b) { |
| dynamic local = 42; |
| { |
| local = ''; |
| if (b) {} |
| local = 0; |
| } |
| return local; |
| } |
| |
| /*member: noBreakInIf:[null]*/ |
| noBreakInIf() { |
| _noBreakInIf(true); |
| _noBreakInIf(false); |
| } |