# Copyright (c) 2016, 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.

[ $compiler == dart2js ]
unsorted/invocation_errors_test: Pass
unsorted/nsm_dispatcher_test: Skip # The test uses Symbol without MirrorsUsed
unsorted/simple_literal_test/01: Skip # The test expects error for large integer literal.
unsorted/super_initializer_test: Skip
unsorted/super_mixin_test: CompileTimeError

[ !$fasta ]
unsorted/loop_test: Skip # This test uses optional new/const.

[ !$strong ]
unsorted/invocation_errors_test: RuntimeError

[ $arch == simarm && $compiler == dartkp && $strong ]
unsorted/invocation_errors_test: CompileTimeError
unsorted/nsm_dispatcher_test: CompileTimeError
unsorted/super_mixin_test: CompileTimeError
unsorted/types_test: RuntimeError

[ $arch == simarm64 && $compiler == dartkp && $strong ]
unsorted/invocation_errors_test: CompileTimeError
unsorted/nsm_dispatcher_test: CompileTimeError
unsorted/super_mixin_test: CompileTimeError
unsorted/types_test: RuntimeError

[ $compiler == dart2analyzer && $runtime == none ]
unsorted/invocation_errors_test: StaticWarning
unsorted/super_mixin_test: CompileTimeError

[ $compiler == dart2analyzer && $strong ]
*: Skip # Issue 28649

[ $compiler == dartk && $strong ]
unsorted/invocation_errors_test: CompileTimeError
unsorted/nsm_dispatcher_test: CompileTimeError
unsorted/super_mixin_test: CompileTimeError
unsorted/types_test: RuntimeError

[ $runtime == dart_precompiled && $minified ]
unsorted/symbol_literal_test: Skip # Expects unobfuscated Symbol.toString.

