// 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 /*member: returnInt1:[exact=JSUInt31]*/ returnInt1() { var a = 42; try { a = 54; } catch (e) {} return a; } /*member: returnDyn1:Union([exact=JSString], [exact=JSUInt31])*/ returnDyn1() { dynamic a = 42; try { a = 'foo'; } catch (e) {} return a; } /*member: returnInt2:[exact=JSUInt31]*/ returnInt2() { var a = 42; try { a = 54; } catch (e) { a = 2; } return a; } /*member: returnDyn2:Union([exact=JSString], [exact=JSUInt31])*/ returnDyn2() { dynamic a = 42; try { a = 54; } catch (e) { a = 'foo'; } return a; } /*member: returnInt3:[exact=JSUInt31]*/ returnInt3() { dynamic a = 42; try { a = 54; } catch (e) { a = 'foo'; } finally { a = 4; } return a; } /*member: returnDyn3:Union([exact=JSString], [exact=JSUInt31])*/ returnDyn3() { dynamic a = 42; try { a = 54; // ignore: unused_catch_clause } on String catch (e) { a = 2; // ignore: unused_catch_clause } on Object catch (e) { a = 'foo'; } return a; } /*member: returnInt4:[exact=JSUInt31]*/ returnInt4() { var a = 42; try { a = 54; // ignore: unused_catch_clause } on String catch (e) { a = 2; // ignore: unused_catch_clause } on Object catch (e) { a = 32; } return a; } /*member: returnDyn4:Union([exact=JSString], [exact=JSUInt31])*/ returnDyn4() { dynamic a = 42; if (a /*invoke: [exact=JSUInt31]*/ == 54) { try { a = 'foo'; } catch (e) {} } return a; } /*member: returnInt5:[exact=JSUInt31]*/ returnInt5() { var a = 42; if (a /*invoke: [exact=JSUInt31]*/ == 54) { try { a = 42; } catch (e) {} } return a; } /*member: returnDyn5:Union([exact=JSString], [exact=JSUInt31])*/ returnDyn5() { dynamic a = 42; if (a /*invoke: [exact=JSUInt31]*/ == 54) { try { a = 'foo'; print(a); a = 42; } catch (e) {} } return a; } /*member: returnInt6:[subclass=JSInt]*/ returnInt6() { try { throw 42; } on int catch (e) { return e; } // ignore: dead_code return 42; } /*member: returnDyn6:[null|subclass=Object]*/ returnDyn6() { try { throw 42; } catch (e) { return e; } } /*member: returnInt7:[exact=JSUInt31]*/ returnInt7() { dynamic a = 'foo'; try { a = 42; return a; } catch (e) {} return 2; } /*member: main:[null]*/ main() { returnInt1(); returnDyn1(); returnInt2(); returnDyn2(); returnInt3(); returnDyn3(); returnInt4(); returnDyn4(); returnInt5(); returnDyn5(); returnInt6(); returnDyn6(); returnInt7(); }