# 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.

# This directory contains tests that are intended to show the
# current state of the language.

[ $compiler == none ]
built_in_identifier_prefix_test: Fail # Issue 6970
await_for_cancel_test: RuntimeError # Issue 21404
asyncstar_yield_test: Fail # Issue 21404
asyncstar_yieldstar_test: Fail # Issue 21404
asyncstar_concat_test: Fail # Issue 21404

# These bugs refer currently ongoing language discussions.
constructor_initializer_test/none: Fail # Issue 12633
constructor5_test: Fail # Issue 6422
constructor6_test: Fail # Issue 6422
closure_in_initializer_test: Fail # Issue 6422

# Regular bugs which should be fixed.
duplicate_export_negative_test: Fail # Issue 6134

[ $compiler == dart2dart ]

deferred_load_library_wrong_args_test/none: Fail # Issue 17523
deferred_load_inval_code_test: Fail # Issue 17523
deferred_not_loaded_check_test: Fail # Issue 17523
deferred_constraints_type_annotation_test/*: Fail, Pass # Issue 17523
deferred_constraints_constants_test/*: Fail, Pass # Issue 17523
deferred_shadow_load_library_test: Fail # Issue 17523
deferred_closurize_load_library_test: Fail  # Issue 17523
deferred_inlined_test: Fail  # Issue 17523
deferred_optimized_test: Fail  # Issue 17523
enum_mirror_test: Skip # Issue 11511.

override_inheritance_mixed_test/08: Fail # Issue 18124
override_inheritance_mixed_test/09: Fail # Issue 18124

[ $compiler == none || $compiler == dart2dart ]
# Non-contractive types are not supported in the vm.
cyclic_type_test/02: Fail, OK
cyclic_type_test/04: Fail, OK
cyclic_type2_test: Fail, OK
least_upper_bound_expansive_test/*: Fail, OK

compile_time_constant12_test: Fail # Issue 21000
async_await_syntax_test/a09a: CompileTimeError # Issue 21404
async_await_syntax_test/a10a: CompileTimeError # Issue 21404
async_await_syntax_test/b09a: CompileTimeError # Issue 21404
async_await_syntax_test/b10a: CompileTimeError # Issue 21404
async_await_syntax_test/c09a: CompileTimeError # Issue 21404
async_await_syntax_test/c10a: CompileTimeError # Issue 21404
async_await_syntax_test/d09a: CompileTimeError # Issue 21404
async_await_syntax_test/d10a: CompileTimeError # Issue 21404

[ $compiler == none || ($compiler == dart2dart && $builder_tag != new_backend) ]
async_throw_in_catch_test: Crash # Issue 22445, 22446
compile_time_constant_c_test/01: Fail # Issue 21000
asyncstar_throw_in_catch_test: CompileTimeError # Issue 21404
async_await_syntax_test/a03a: CompileTimeError # Issue 21404
async_await_syntax_test/a03b: CompileTimeError # Issue 21404
async_await_syntax_test/a11d: CompileTimeError # Issue 21404
async_await_syntax_test/b03a: CompileTimeError # Issue 21404
async_await_syntax_test/b11d: CompileTimeError # Issue 21404
async_await_syntax_test/c03a: CompileTimeError # Issue 21404
async_await_syntax_test/d03a: CompileTimeError # Issue 21404
sync_generator3_test/test2: Fail # Issue 22300

[ $compiler == none && ($runtime == drt || $runtime == dartium|| $runtime == ContentShellOnAndroid) ]
async_throw_in_catch_test: Timeout # Issue 22445, 22446
asyncstar_throw_in_catch_test: RuntimeError # Issue 21404
async_await_syntax_test/a03a: RuntimeError # Issue 21404
async_await_syntax_test/a03b: RuntimeError # Issue 21404
async_await_syntax_test/a09a: RuntimeError # Issue 21404
async_await_syntax_test/a10a: RuntimeError # Issue 21404
async_await_syntax_test/a11d: RuntimeError # Issue 21404
async_await_syntax_test/b03a: RuntimeError # Issue 21404
async_await_syntax_test/b09a: RuntimeError # Issue 21404
async_await_syntax_test/b10a: RuntimeError # Issue 21404
async_await_syntax_test/b11d: RuntimeError # Issue 21404
async_await_syntax_test/c03a: RuntimeError # Issue 21404
async_await_syntax_test/c09a: RuntimeError # Issue 21404
async_await_syntax_test/c10a: RuntimeError # Issue 21404
async_await_syntax_test/d03a: RuntimeError # Issue 21404
async_await_syntax_test/d09a: RuntimeError # Issue 21404
async_await_syntax_test/d10a: RuntimeError # Issue 21404


[ $compiler == none && $runtime == vm ]
class_keyword_test/02: MissingCompileTimeError # Issue 13627
unicode_bom_test: Fail # Issue 16067

[ $compiler == none && $checked ]
type_variable_bounds4_test/01: Fail # Issue 14006

[ $compiler == none ]
dynamic_prefix_core_test/01: RuntimeError # Issue 12478

[ $compiler == none && ($runtime == vm || $runtime == drt || $runtime == dartium|| $runtime == ContentShellOnAndroid) ]
dynamic_prefix_core_test/none: Fail # Issue 12478
export_ambiguous_main_negative_test: Fail # Issue 14763

[ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) && $unchecked ]
assertion_test: Fail # Issue 13719: Please triage this failure.
generic_test: Fail # Issue 13719: Please triage this failure.
list_literal4_test: Fail # Issue 13719: Please triage this failure.
map_literal4_test: Fail # Issue 13719: Please triage this failure.
named_parameters_type_test/01: Fail # Issue 13719: Please triage this failure.
named_parameters_type_test/02: Fail # Issue 13719: Please triage this failure.
named_parameters_type_test/03: Fail # Issue 13719: Please triage this failure.
positional_parameters_type_test/01: Fail # Issue 13719: Please triage this failure.
positional_parameters_type_test/02: Fail # Issue 13719: Please triage this failure.
type_checks_in_factory_method_test: Fail # Issue 13719: Please triage this failure.
vm/type_vm_test: Fail # Issue 13719: Please triage this failure.

[ $compiler == none && $runtime == dartium ]
first_class_types_literals_test: Pass, Fail # Issue 13719: Please triage this failure.

[ $compiler == none && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
issue13474_test: Pass, Fail # Issue 14651.
typed_message_test: Crash, Fail # Issue 13921, 14400
vm/optimized_guarded_field_isolates_test: Fail # Issue 13921.
main_test/01: Fail # Issue 20028
main_test/02: Fail # Issue 20028
main_test/04: Fail # Issue 20028
main_test/05: Fail # Issue 20028
main_test/21: Fail # Issue 20028
main_test/42: Fail # Issue 20028
mirror_in_static_init_test: Fail # Issue 22071

[ $compiler == none && $runtime == drt ]
disassemble_test: Pass, Fail # Issue 18122

[ $compiler == none && $runtime == vm && $arch == mips && $checked ]
generic_instanceof3_test: Pass, Crash # Issue 17440.

[ $compiler == none && $runtime == vm && $arch == mips && $mode == debug ]
stack_overflow_test: Skip # Crashes. Issue 17440.
stack_overflow_stacktrace_test: Skip # Crashes. Issue 17440.
large_class_declaration_test: Skip # Times out. Issue 20352

[ $compiler == none && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) && $mode == debug ]
large_class_declaration_test: Skip # Times out. Issue 20352

[ $compiler == none && $runtime == ContentShellOnAndroid ]
gc_test: Skip # Times out flakily. Issue 20956

[ $compiler == none && $runtime == vm && ( $arch == simarm || $arch == arm || $arch == simarm64 || $arch == arm64 || $arch == simmips || $arch == mips) ]
vm/load_to_load_unaligned_forwarding_vm_test: Pass, Crash # Unaligned offset. Issue 22151

