Files
sdk/pkg/compiler/test/inference/data/try.dart
T
Mayank Patke 553ac951b3 [dart2js] Add indexable bits to powerset.
Change-Id: I5d4c0b4d15a05cfc30d87003785ca841c46b1a0f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/426583
Reviewed-by: Stephen Adams <sra@google.com>
2025-05-07 19:18:38 -07:00

240 lines
7.5 KiB
Dart

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