|  | // 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"; | 
|  |  | 
|  | void argument() { | 
|  | throw new ArgumentError(499); | 
|  | } | 
|  |  | 
|  | // Verify that | 
|  | void noSuchMethod() { | 
|  | (499 as dynamic).doesNotExist(); | 
|  | } | 
|  |  | 
|  | void nullThrown() { | 
|  | throw null as dynamic; | 
|  | } | 
|  |  | 
|  | void range() { | 
|  | throw new RangeError.range(0, 1, 2); | 
|  | } | 
|  |  | 
|  | abstract class A { | 
|  | foo(); | 
|  | } | 
|  |  | 
|  | void unsupported() { | 
|  | throw new UnsupportedError("unsupported"); | 
|  | } | 
|  |  | 
|  | void unimplemented() { | 
|  | throw new UnimplementedError("unimplemented"); | 
|  | } | 
|  |  | 
|  | void state() { | 
|  | [1, 2].single; | 
|  | } | 
|  |  | 
|  | void cast() { | 
|  | dynamic d = 1; | 
|  | d as String; | 
|  | } | 
|  |  | 
|  | main() { | 
|  | List<Function> errorFunctions = [ | 
|  | argument, | 
|  | noSuchMethod, | 
|  | nullThrown, //# nullThrown: ok | 
|  | range, | 
|  | unsupported, | 
|  | unimplemented, | 
|  | state, | 
|  | cast, | 
|  | ]; | 
|  |  | 
|  | for (var f in errorFunctions) { | 
|  | bool hasThrown = false; | 
|  | try { | 
|  | f(); | 
|  | } on Error catch (e) { | 
|  | hasThrown = true; | 
|  | Expect.isTrue( | 
|  | e.stackTrace is StackTrace, "$e doesn't have a non-null stack trace"); | 
|  | } | 
|  | Expect.isTrue(hasThrown); | 
|  | } | 
|  | } |