d264156cfb
BUG= R=devoncarew@google.com, rmacnak@google.com Review-Url: https://codereview.chromium.org/2694013003 .
75 lines
1.5 KiB
Dart
75 lines
1.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.
|
|
|
|
import 'package:unittest/unittest.dart';
|
|
|
|
thrower() async {
|
|
throw 'oops';
|
|
}
|
|
|
|
number() async {
|
|
return 4;
|
|
}
|
|
|
|
generator() async* {
|
|
yield await number();
|
|
yield await thrower();
|
|
}
|
|
|
|
foo() async {
|
|
await for (var i in generator()) {
|
|
print(i);
|
|
}
|
|
}
|
|
|
|
main() async {
|
|
// Test async and async*.
|
|
try {
|
|
await foo();
|
|
} catch (e, st) {
|
|
expect(st.toString(), stringContainsInOrder([
|
|
'thrower', '.dart:8',
|
|
'<asynchronous suspension>',
|
|
'generator', '.dart:17',
|
|
'<asynchronous suspension>',
|
|
'foo', '.dart:21',
|
|
'<asynchronous suspension>',
|
|
'main',
|
|
]));
|
|
}
|
|
|
|
inner() async {
|
|
deep() async {
|
|
await thrower();
|
|
}
|
|
await deep();
|
|
}
|
|
|
|
// Test inner functions.
|
|
try {
|
|
await inner();
|
|
} catch (e, st) {
|
|
expect(st.toString(), stringContainsInOrder([
|
|
'thrower',
|
|
'<asynchronous suspension>',
|
|
'main.inner.deep',
|
|
'<asynchronous suspension>',
|
|
'main.inner',
|
|
'<asynchronous suspension>',
|
|
'main',
|
|
'<asynchronous suspension>',
|
|
]));
|
|
}
|
|
|
|
// Test for correct linkage.
|
|
try {
|
|
await thrower();
|
|
} catch(e, st) {
|
|
expect(st.toString(), stringContainsInOrder([
|
|
'thrower', '.dart:8',
|
|
'<asynchronous suspension>',
|
|
'main', '.dart:67',
|
|
]));
|
|
}
|
|
} |