|  | // 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")); | 
|  | } | 
|  | } |