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