// 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() { emptyTryCatch(); emptyTryFinally(); emptyTryCatchFinally(); tryCatchAssignmentInTry(); tryCatchAssignmentInCatch(); tryFinallyAssignmentInFinally(); tryCatchAssignmentInTryCatch(); tryCatchAssignmentInTryFinally(); tryCatchParameterAssignmentInTry(); tryCatchParameterAssignmentInCatch(); tryFinallyParameterAssignmentInFinally(); tryCatchParameterAssignmentInTryCatch(); tryFinallyParameterAssignmentInTryFinally(); } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through an empty try-catch statement. //////////////////////////////////////////////////////////////////////////////// /*member: _emptyTryCatch:[exact=JSUInt31]*/ _emptyTryCatch(/*[exact=JSUInt31]*/ o) { try {} catch (e) {} return o; } /*member: emptyTryCatch:[null]*/ emptyTryCatch() { _emptyTryCatch(0); } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through an empty try-finally statement. //////////////////////////////////////////////////////////////////////////////// /*member: _emptyTryFinally:[exact=JSUInt31]*/ _emptyTryFinally(/*[exact=JSUInt31]*/ o) { try {} finally {} return o; } /*member: emptyTryFinally:[null]*/ emptyTryFinally() { _emptyTryFinally(0); } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through an empty try-catch-finally statement. //////////////////////////////////////////////////////////////////////////////// /*member: _emptyTryCatchFinally:[exact=JSUInt31]*/ _emptyTryCatchFinally(/*[exact=JSUInt31]*/ o) { try {} catch (e) {} finally {} return o; } /*member: emptyTryCatchFinally:[null]*/ emptyTryCatchFinally() { _emptyTryCatchFinally(0); } //////////////////////////////////////////////////////////////////////////////// /// A try-catch statement with an assignment in the try block. //////////////////////////////////////////////////////////////////////////////// /*member: tryCatchAssignmentInTry:[null|exact=JSUInt31]*/ tryCatchAssignmentInTry() { var o = 0; try { o = null; } catch (e) {} return o; } //////////////////////////////////////////////////////////////////////////////// /// A try-catch statement with an assignment in the catch block. //////////////////////////////////////////////////////////////////////////////// /*member: tryCatchAssignmentInCatch:[null|exact=JSUInt31]*/ tryCatchAssignmentInCatch() { var o = 0; try {} catch (e) { o = null; } return o; } //////////////////////////////////////////////////////////////////////////////// /// A try-finally statement with an assignment in the finally clause. //////////////////////////////////////////////////////////////////////////////// /*member: tryFinallyAssignmentInFinally:[null]*/ tryFinallyAssignmentInFinally() { var o = 0; try {} finally { o = null; } return o; } //////////////////////////////////////////////////////////////////////////////// /// A try-catch statement with an assignment in both the try block and the catch /// block. //////////////////////////////////////////////////////////////////////////////// /*member: tryCatchAssignmentInTryCatch:Union(null, [exact=JSString], [exact=JSUInt31])*/ tryCatchAssignmentInTryCatch() { dynamic o = 0; try { o = ''; } catch (e) { o = null; } return o; } //////////////////////////////////////////////////////////////////////////////// /// A try-catch statement with an assignment in both the try block and the /// finally block. //////////////////////////////////////////////////////////////////////////////// /*member: tryCatchAssignmentInTryFinally:[null]*/ tryCatchAssignmentInTryFinally() { dynamic o = 0; try { o = ''; } finally { o = null; } return o; } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through a try-catch statement with an assignment in the /// catch clause. //////////////////////////////////////////////////////////////////////////////// /*member: _tryCatchParameterAssignmentInTry:[null|exact=JSUInt31]*/ _tryCatchParameterAssignmentInTry(/*[exact=JSUInt31]*/ o) { try { o = null; } catch (e) {} return o; } /*member: tryCatchParameterAssignmentInTry:[null]*/ tryCatchParameterAssignmentInTry() { _tryCatchParameterAssignmentInTry(0); } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through a try-catch statement with an assignment in the /// catch clause. //////////////////////////////////////////////////////////////////////////////// /*member: _tryCatchParameterAssignmentInCatch:[null|exact=JSUInt31]*/ _tryCatchParameterAssignmentInCatch(/*[exact=JSUInt31]*/ o) { try {} catch (e) { o = null; } return o; } /*member: tryCatchParameterAssignmentInCatch:[null]*/ tryCatchParameterAssignmentInCatch() { _tryCatchParameterAssignmentInCatch(0); } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through a try-finally statement with an assignment in the /// finally clause. //////////////////////////////////////////////////////////////////////////////// /*member: _tryFinallyParameterAssignmentInFinally:[null]*/ _tryFinallyParameterAssignmentInFinally(/*[exact=JSUInt31]*/ o) { try {} finally { o = null; } return o; } /*member: tryFinallyParameterAssignmentInFinally:[null]*/ tryFinallyParameterAssignmentInFinally() { _tryFinallyParameterAssignmentInFinally(0); } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through a try-catch statement with an assignment in the /// catch clause. //////////////////////////////////////////////////////////////////////////////// /*member: _tryCatchParameterAssignmentInTryCatch:Union(null, [exact=JSString], [exact=JSUInt31])*/ _tryCatchParameterAssignmentInTryCatch(/*[exact=JSUInt31]*/ o) { try { o = ''; } catch (e) { o = null; } return o; } /*member: tryCatchParameterAssignmentInTryCatch:[null]*/ tryCatchParameterAssignmentInTryCatch() { _tryCatchParameterAssignmentInTryCatch(0); } //////////////////////////////////////////////////////////////////////////////// /// Parameter passed through a try-finally statement with an assignment in the /// finally clause. //////////////////////////////////////////////////////////////////////////////// /*member: _tryFinallyParameterAssignmentInTryFinally:[null]*/ _tryFinallyParameterAssignmentInTryFinally(/*[exact=JSUInt31]*/ o) { try { o = ''; } finally { o = null; } return o; } /*member: tryFinallyParameterAssignmentInTryFinally:[null]*/ tryFinallyParameterAssignmentInTryFinally() { _tryFinallyParameterAssignmentInTryFinally(0); }