| // 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() { | 
 |   unconditionalThrow(); | 
 |   conditionalThrow(); | 
 |   conditionalThrowReturn(); | 
 |   unconditionalRethrow(); | 
 | } | 
 |  | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 | /// Method that throws unconditionally. | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | /*member: unconditionalThrow:[empty]*/ | 
 | unconditionalThrow() => throw 'foo'; | 
 |  | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 | /// Method that throws conditionally. | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | /*member: _conditionalThrow:[null]*/ | 
 | _conditionalThrow(/*[exact=JSBool]*/ o) { | 
 |   if (o) throw 'foo'; | 
 | } | 
 |  | 
 | /*member: conditionalThrow:[null]*/ | 
 | conditionalThrow() { | 
 |   _conditionalThrow(true); | 
 |   _conditionalThrow(false); | 
 | } | 
 |  | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 | /// Method that throws conditionally and return 0. | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | /*member: _conditionalThrowReturn:[exact=JSUInt31]*/ | 
 | _conditionalThrowReturn(/*[exact=JSBool]*/ o) { | 
 |   if (o) throw 'foo'; | 
 |   return 0; | 
 | } | 
 |  | 
 | /*member: conditionalThrowReturn:[null]*/ | 
 | conditionalThrowReturn() { | 
 |   _conditionalThrowReturn(true); | 
 |   _conditionalThrowReturn(false); | 
 | } | 
 |  | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 | /// Method that rethrows unconditionally. | 
 | //////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | /*member: unconditionalRethrow:[empty]*/ | 
 | unconditionalRethrow() { | 
 |   try { | 
 |     throw 'foo'; | 
 |   } catch (e) { | 
 |     rethrow; | 
 |   } | 
 | } |