# 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) && $unchecked]
Language/12_Expressions/01_Constants_A16_t04: fail # Issue 392, passes in checked mode b/c of type check

[ $compiler == none && ($runtime == vm || $runtime == dartium) ]
Language/13_Statements/03_Variable_Declaration_A04_t01: Fail, MissingCompileTimeError # Issue 7052
Language/13_Statements/03_Variable_Declaration_A04_t02: Fail, MissingCompileTimeError # Issue 7052
Language/13_Statements/03_Variable_Declaration_A04_t05: Fail, MissingCompileTimeError # Issue 7052
Language/13_Statements/03_Variable_Declaration_A04_t06: Fail, MissingCompileTimeError # Issue 7052
Language/13_Statements/03_Variable_Declaration_A04_t07: Fail # co19 issue 535
Language/13_Statements/03_Variable_Declaration_A04_t08: Fail # co19 issue 535

LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A03_t01: Fail # Issue 12508
LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A02_t01: Fail # Issue 12508
LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t02: Fail # Issue 12508
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A03_t01: Fail # Issue 12508
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: Fail # Issue 12508
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t02: Fail # Issue 12508
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: Fail # Issue 12508
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: Fail # Issue 12508

LibTest/core/Match/operator_subscript_A01_t01: Fail # Issue 12508
LibTest/core/RegExp/firstMatch_A01_t01: Fail # Issue 12508
LibTest/core/int/toRadixString_A01_t01: Fail # co19 issue 492

Language/03_Overview/2_Privacy_A01_t06: Fail # Issue 463

LibTest/async/Timer/Timer.periodic_A02_t01: Pass, Fail # co19 issue 537

Language/05_Variables/05_Variables_A05_t01: fail # Dart issue 12539
Language/05_Variables/05_Variables_A05_t02: fail # Dart issue 12539
Language/12_Expressions/30_Identifier_Reference_A08_t02: fail # Dart issue 12593
Language/13_Statements/06_For_A01_t11: fail # Dart issue 5675
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

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

# All isolate are being ignored at the moment as the library will go through some changes.
LibTest/isolate/isolate_api/spawnUri_A02_t02: Fail, Timeout # VM triage, check spec.
LibTest/isolate/isolate_api/spawnUri_A02_t03: Fail, Timeout # VM triage, check spec.
LibTest/isolate/IsolateSink/addError_A01_t01: fail # co19-roll r546: Please triage this failure
LibTest/isolate/IsolateSink/addError_A01_t02: fail # co19-roll r546: Please triage this failure
LibTest/isolate/IsolateStream/any_A02_t01: fail # co19-roll r546: Please triage this failure
LibTest/isolate/IsolateStream/contains_A02_t01: fail, pass # co19-roll r546: Please triage this failure
LibTest/isolate/ReceivePort/receive_A01_t02: Fail # VM triage, check spec.
LibTest/isolate/SendPort/send_A01_t01: fail # co19-roll r546: Please triage this failure

LibTest/core/Invocation/positionalArguments_A01_t01: RuntimeError # co19-roll r607: Please triage this failure
LibTest/core/RegExp/Pattern_semantics/splitQueryString_A02_t01: RuntimeError # co19-roll r607: Please triage this failure
LibTest/core/Symbol/Symbol_A01_t03: RuntimeError # co19-roll r607: Please triage this failure
LibTest/core/Symbol/Symbol_A01_t05: RuntimeError # co19-roll r607: Please triage this failure
LibTest/typed_data/Float32x4/clamp_A01_t01: Pass, Fail # co19 issue 636

[ $compiler == none && $runtime == vm ]
LibTest/typed_data/Float32x4/reciprocalSqrt_A01_t01: Pass, Fail # Issue 13398
LibTest/typed_data/Float32x4/reciprocal_A01_t01: Pass, Fail # Issue 13398

[ $compiler == none && $runtime == vm && $checked ]
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issue 408
LibTest/core/List/removeAt_A02_t01: Fail # co19-roll r641: Please triage this failure

# Passing for the wrong reasons:
LibTest/async/Completer/completeError_A03_t02: Pass # No AsyncError anymore. Issue 407 and 463
LibTest/async/Completer/complete_A02_t02: Pass # No AsyncError anymore. Issue 407 and 463
LibTest/async/Future/catchError_A01_t01: Pass # No AsyncError anymore. Issue 407 and 463
LibTest/async/Future/catchError_A01_t02: Pass # No AsyncError anymore. Issue 407 and 463

#end [ $compiler == none && $runtime == vm && $checked ]

[ $compiler == none && $runtime == vm && $mode == debug ]
LibTest/isolate/isolate_api/spawnFunction_A02_t01: Crash
LibTest/async/Stream/Stream.periodic_A03_t01: Fail # co19-roll r546: Please triage this failure
LibTest/isolate/IsolateStream/contains_A02_t01: Fail # co19-roll r546: Please triage this failure
Language/15_Types/4_Interface_Types_A11_t01: Pass, Slow
LibTest/core/List/List_class_A01_t01: Pass, Slow

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

[ $compiler == none && $runtime == vm && $arch == mips ]
LibTest/math/log_A01_t01: Fail
LibTest/core/double/toInt_A01_t01: Fail

[ $compiler == none && $runtime == vm && ($arch == simarm || $arch == simmips) ]
LibTest/core/Uri/Uri_A06_t03: Pass, Timeout # co19-roll r576: Please triage this failure

[ $compiler == none && $checked && ($runtime == vm || $runtime == dartium) ]
LibTest/typed_data/Float32x4List/elementAt_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/fillRange_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/first_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/first_A03_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/firstWhere_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/firstWhere_A02_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/getRange_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/getRange_A02_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/last_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/lastWhere_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/map_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/map_A02_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/map_A03_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/operator_subscript_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/operator_subscripted_assignment_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/reversed_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/single_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/singleWhere_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/skip_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/take_A01_t01: Fail # Dart issue 12861
LibTest/typed_data/Float32x4List/take_A02_t01: Fail # Dart issue 12861
Language/12_Expressions/12_Instance_Creation_A01_t08: CompileTimeError # co19-roll r607: Please triage this failure

[ $compiler == none && $runtime == vm && $system == windows && $mode == debug ]
Language/15_Types/4_Interface_Types_A11_t01: pass, timeout # Issue 13349
Language/15_Types/4_Interface_Types_A11_t02: pass, timeout # Issue 13349

