dart-sdk/tests/corelib/error_stack_trace2_test.dart
Sigmund Cherem 42ce378e3e [tests] adjust error_stack_trace2_test to work also for DDC.
Change-Id: I6d1b18e7025ecd307a3456e695a718fd6f5db2fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142200
Reviewed-by: Liam Appelbe <liama@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
2020-04-02 18:25:29 +00:00

44 lines
1 KiB
Dart

// Copyright (c) 2013, 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:expect/expect.dart";
class A {
get foo => cyclicStatic;
}
var a = new A();
dynamic cyclicStatic = (() => a.foo + 1)();
cyclicInitialization() {
return cyclicStatic;
}
// Helper method to detect whether [errorType] is an overflow error.
//
// TODO(41308): Use `is StackOverflowError` once DDC converts overflow errors
// from JavaSript.
bool isOverflowError(Type errorType) {
void detectOverflowError() => detectOverflowError();
try {
detectOverflowError();
} catch (e) {
return errorType == e.runtimeType;
}
return false;
}
main() {
bool hasThrown = false;
try {
cyclicStatic + 1;
} catch (e2) {
var e = e2;
hasThrown = true;
Expect.isTrue(isOverflowError(e.runtimeType),
"Got '$e' instead of StackOverflowError");
}
Expect.isTrue(hasThrown);
}