# Copyright (c) 2012, 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 == none && ($runtime == vm || $runtime == dartium || $runtime == ContentShellOnAndroid) ]

LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: Fail # Issue 22200
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: Fail # Issue 22200
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: Fail # Issue 22200

LibTest/core/int/toRadixString_A01_t01: Fail # co19 issue 492

Language/03_Overview/1_Scoping_A02_t28: RuntimeError # Issue 21163
Language/13_Statements/09_Switch_A01_t02: fail # Dart issue 12908
Language/13_Statements/12_Labels_A01_t03: fail # Dart issue 2238
Language/14_Libraries_and_Scripts/2_Exports_A04_t02: fail # Dart issue 12916
Language/14_Libraries_and_Scripts/2_Exports_A04_t03: fail # Dart issue 12916

Language/13_Statements/15_Assert_A03_t02: skip # co19 issue 734
Language/13_Statements/15_Assert_A03_t03: skip # co19 issue 734
Language/13_Statements/15_Assert_A04_t02: skip # co19 issue 734
Language/13_Statements/15_Assert_A04_t05: skip # co19 issue 734


LibTest/core/DateTime/parse_A03_t01: fail # Issue 12514

LibTest/core/DateTime/DateTime.now_A01_t02: Pass, Fail # co19 issue 709

LibTest/isolate/Isolate/spawnUri_A01_t02: Skip # Dart issue 15974
LibTest/isolate/Isolate/spawnUri_A01_t03: Skip # Dart issue 15974
LibTest/isolate/Isolate/spawnUri_A02_t01: RuntimeError # Dart issue 15617
LibTest/isolate/Isolate/spawnUri_A02_t02: Skip # Dart issue 15974
LibTest/isolate/Isolate/spawnUri_A02_t03: Skip # Dart issue 15974
LibTest/isolate/Isolate/spawnUri_A02_t04: Skip # Dart issue 15974
LibTest/isolate/Isolate/spawn_A02_t02: RuntimeError # Dart issue 15617

LibTest/core/Symbol/Symbol_A01_t03: RuntimeError # Issue 13596
LibTest/core/Symbol/Symbol_A01_t05: RuntimeError # Issue 13596

[ $compiler == none && $runtime == vm ]
LibTest/typed_data/Float32x4/reciprocalSqrt_A01_t01: Pass, Fail # co19 issue 599
LibTest/typed_data/Float32x4/reciprocal_A01_t01: Pass, Fail # co19 issue 599
Language/12_Expressions/12_Instance_Creation/2_Const_A11_t01: MissingCompileTimeError # Issue 22007
Language/12_Expressions/12_Instance_Creation/2_Const_A11_t03: MissingCompileTimeError # Issue 22007
# With asynchronous loading, the load errors in these tests are no longer recognized as compile errors:
Language/14_Libraries_and_Scripts/1_Imports_A04_t02: Fail
Language/14_Libraries_and_Scripts/2_Exports_A05_t02: Fail
Language/14_Libraries_and_Scripts/3_Parts_A01_t06: Fail

[ $runtime == vm ]
LibTest/math/MutableRectangle/MutableRectangle.fromPoints_A01_t01: Pass, RuntimeError # co19-roll r607: Please triage this failure

[ $compiler == none && $runtime == vm && $mode == debug ]
LibTest/core/List/List_class_A01_t02: Pass, Slow

[ $compiler == none && $runtime == vm && ($arch != x64 && $arch != simarm64) ]
LibTest/core/int/operator_left_shift_A01_t02: Fail # co19 issue 129

[ $compiler == none && $runtime == vm && $arch == mips ]
LibTest/core/double/toInt_A01_t01: Fail
# These tests take too much memory (300 MB) for our 1 GB test machine.
# co19 issue 673. http://code.google.com/p/co19/issues/detail?id=673
LibTest/core/List/List_class_A01_t02: Skip # co19 issue 673
LibTest/collection/ListMixin/ListMixin_class_A01_t02: Skip # co19 issue 673
LibTest/collection/ListBase/ListBase_class_A01_t02: Skip # co19 issue 673

[ $compiler == none && $runtime == vm && $arch == mips && $mode == debug ]
LibTest/isolate/Isolate/spawnUri_A01_t04: Crash, Pass # Issue 17440
LibTest/isolate/Isolate/spawn_A01_t04: Crash, Pass # Issue 17440

[ $compiler == none && $runtime == vm && ($arch == simarm || $arch == simarmv5te || $arch == simmips || $arch == simarm64) ]
LibTest/core/Uri/Uri_A06_t03: Skip  # Timeout
LibTest/collection/ListMixin/ListMixin_class_A01_t01: Skip  # Timeout
LibTest/collection/ListBase/ListBase_class_A01_t01: Skip  # Timeout
LibTest/collection/ListMixin/ListMixin_class_A01_t02: Skip  # Timeout
LibTest/collection/ListBase/ListBase_class_A01_t02: Skip  # Timeout

[ $runtime == vm ]
LibTest/isolate/Isolate/spawn_A02_t01: Skip # co19 issue 667
LibTest/html/*: SkipByDesign # dart:html not supported on VM.
LayoutTests/fast/*: SkipByDesign # DOM not supported on VM.
WebPlatformTest/*: SkipByDesign # dart:html not supported on VM.

[ $runtime == vm && $mode == debug && $builder_tag == asan ]
Language/15_Types/4_Interface_Types_A11_t01: Skip  # Issue 21174.

[ $runtime == vm && $arch == arm ]
LibTest/typed_data/Float32x4/operator_multiplication_A01_t01: Fail # Dart issue 24416
