blob: ca11b65e89c8ea646b728f10c118d550c1025ae9 [file] [log] [blame]
// Copyright (c) 2012, 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.9
import "package:expect/expect.dart";
// Dart test program for testing throw expressions.
void test1() {
var x = 6;
try {
throw x = 10;
x = 0;
} catch (e) {
Expect.equals(10, e);
Expect.equals(10, x);
x = 15;
}
Expect.equals(15, x);
x = 100;
try {
throw x++;
x = 0;
} catch (e) {
Expect.equals(100, e);
Expect.equals(101, x);
x = 150;
}
Expect.equals(150, x);
}
void test2() {
var x = 6;
try {
throw x + 4;
} catch (e) {
Expect.equals(10, e);
Expect.equals(6, x);
x = 15;
}
Expect.equals(15, x);
}
foo(x, y) => throw "foo" "$x";
bar(x, y) => throw "foo" "${throw x}";
class Q {
var qqq;
f(x) {
qqq = x;
}
Q get nono => throw "nono";
}
void test3() {
try {
throw throw throw "up";
} catch (e) {
Expect.equals("up", e);
}
dynamic x = 10;
try {
foo(x = 12, throw 7);
} catch (e) {
Expect.equals(7, e);
Expect.equals(12, x);
}
x = 10;
try {
foo(x++, 10);
} catch (e) {
Expect.equals("foo10", e);
Expect.equals(11, x);
}
x = 100;
try {
bar(++x, 10);
} catch (e) {
Expect.equals(101, e);
Expect.equals(101, x);
}
x = null;
try {
x = new Q();
x
..f(11)
..qqq = throw 77
..f(22);
} catch (e) {
Expect.equals(77, e);
Expect.equals(11, x.qqq);
}
}
void test4() {
var q = new Q();
Expect.throws(() => q.nono, (e) => e == "nono");
}
main() {
test1();
test2();
test3();
test4();
}