blob: 11e68bd803295190cbfcaab4878b9b6058241f43 [file] [log] [blame]
// Copyright (c) 2019, 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: tryCatch:declared={a, b}, assigned={a, b}*/
tryCatch(int a, int b) {
/*declared={d}, assigned={a, b}*/ try /*declared={c}, assigned={a}*/ {
a = 0;
var c;
} on String {
// Note: flow analysis doesn't need to track variables assigned, captured,
// or declared inside of catch blocks. So we don't create an
// AssignedVariables node for this catch block, and consequently the
// assignment to `b` and declaration of `d` are considered to belong to the
// enclosing function.
b = 0;
var d;
}
}
/*member: catchClause:declared={a, b}, assigned={a, b}*/
catchClause(int a, int b) {
/*declared={d, e}, assigned={a, b}*/ try /*declared={c}, assigned={a}*/ {
a = 0;
var c;
} catch (e) {
b = 0;
var d;
}
}
/*member: onCatch:declared={a, b}, assigned={a, b}*/
onCatch(int a, int b) {
/*declared={d, e}, assigned={a, b}*/ try /*declared={c}, assigned={a}*/ {
a = 0;
var c;
} on String catch (e) {
b = 0;
var d;
}
}
/*member: catchStackTrace:declared={a, b}, assigned={a, b}*/
catchStackTrace(int a, int b) {
/*declared={d, e, st}, assigned={a, b}*/ try /*declared={c}, assigned={a}*/ {
a = 0;
var c;
} catch (e, st) {
b = 0;
var d;
}
}
/*member: onCatchStackTrace:declared={a, b}, assigned={a, b}*/
onCatchStackTrace(int a, int b) {
/*declared={d, e, st}, assigned={a, b}*/ try /*declared={c}, assigned={a}*/ {
a = 0;
var c;
} on String catch (e, st) {
b = 0;
var d;
}
}