Files
sdk/tests/language/sync_generator3_test.dart
T
hausner@google.com 2f0d13af3b Fix yield statements in catch blocks
This is a partial fix for issue 22300. The VM no longer setfaults when
using yield in try statements. Yield in catch blocks work. What’s still
not working right is if a value is yielded before an exception is
propagated to the caller.

R=regis@google.com

Review URL: https://codereview.chromium.org//914303006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43707 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-12 00:12:07 +00:00

50 lines
850 B
Dart

// Copyright (c) 2015, 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.
// Test program for sync* generator functions and yielding in try blocks.
import "package:expect/expect.dart";
f() sync* {
try {
yield 1;
throw "three";
} catch (e) {
yield 2;
yield e;
} finally {
yield 4;
}
}
test1() {
var s = f().toString();
Expect.equals("(1, 2, three, 4)", s);
print(s);
}
g() sync* {
try {
yield "a";
throw "pow!";
} finally {
yield "b";
}
}
test2() {
var s;
try {
s = g().toString();
} catch (e) {
Expect.equals("pow!", e);
Expect.equals("(a, b)", s);
print(s);
}
}
main() {
test1(); /// test1: ok
test2(); /// test2: ok
}