| // 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. |
| |
| // @dart = 2.9 |
| |
| // Test that stack traces are properly demangled in constructors (#28740). |
| |
| import "package:expect/expect.dart"; |
| |
| class SomeClass { |
| SomeClass.namedConstructor() { |
| throw new Exception(); |
| } |
| |
| SomeClass() { |
| throw new Exception(); |
| } |
| |
| factory SomeClass.useFactory() { |
| throw new Exception(); |
| } |
| } |
| |
| class OnlyHasFactory { |
| factory OnlyHasFactory() { |
| throw new Exception(); |
| } |
| } |
| |
| void main() { |
| try { |
| new SomeClass(); |
| } on Exception catch (e, st) { |
| final stString = st.toString(); |
| Expect.isTrue(stString.contains("new SomeClass")); |
| Expect.isFalse(stString.contains("SomeClass.")); |
| } |
| |
| try { |
| new SomeClass.namedConstructor(); |
| } on Exception catch (e, st) { |
| final stString = st.toString(); |
| Expect.isTrue(stString.contains("new SomeClass.namedConstructor")); |
| } |
| |
| try { |
| new OnlyHasFactory(); |
| } on Exception catch (e, st) { |
| final stString = st.toString(); |
| Expect.isTrue(stString.contains("new OnlyHasFactory")); |
| Expect.isFalse(stString.contains("OnlyHasFactory.")); |
| } |
| |
| try { |
| new SomeClass.useFactory(); |
| } on Exception catch (e, st) { |
| final stString = st.toString(); |
| Expect.isTrue(stString.contains("new SomeClass.useFactory")); |
| } |
| } |