# 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
tearoff_constructor_basic_test: Skip # Crashes in checked mode -- hausner investigating

# 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

deferred_redirecting_factory_test: Fail # Issue 23408
redirecting_constructor_initializer_test: RuntimeError # Issue 23488

# 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

async_star_regression_2238_test: CompileTimeError, RuntimeError # drt only runtime-errs.
async_star_cancel_while_paused_test: RuntimeError
async_star_await_pauses_test: Skip # Times out. Issue 23996
async_star_regression_fisk_test: RuntimeError # Issue 23994

[ $compiler == none && $runtime == vm ]
class_keyword_test/02: MissingCompileTimeError # Issue 13627
unicode_bom_test: Fail # Issue 16067
vm/debug_break_enabled_vm_test/01: Crash, OK # Expected to hit breakpoint.
try_catch_optimized1_test: Skip # Srdjan investigating

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

[ $compiler == none ]
dynamic_prefix_core_test/01: RuntimeError # Issue 12478
multiline_strings_test: Fail # Issue 23020
conditional_method_invocation_test/12: Fail # Issue 23794
conditional_method_invocation_test/13: Fail # Issue 23794
conditional_method_invocation_test/14: Fail # Issue 23794
conditional_method_invocation_test/15: Fail # Issue 23794
conditional_method_invocation_test/16: Fail # Issue 23794
conditional_method_invocation_test/17: Fail # Issue 23794
conditional_method_invocation_test/18: Fail # Issue 23794
conditional_method_invocation_test/19: Fail # Issue 23794
conditional_property_access_test/10: Fail # Issue 23794
conditional_property_access_test/11: Fail # Issue 23794
conditional_property_access_test/12: Fail # Issue 23794
conditional_property_access_test/13: Fail # Issue 23794
conditional_property_access_test/14: Fail # Issue 23794
conditional_property_access_test/15: Fail # Issue 23794
conditional_property_access_test/16: Fail # Issue 23794
conditional_property_access_test/17: Fail # Issue 23794
conditional_property_assignment_test/23: Fail # Issue 23794
conditional_property_assignment_test/24: Fail # Issue 23794
conditional_property_assignment_test/25: Fail # Issue 23794
conditional_property_assignment_test/26: Fail # Issue 23794
conditional_property_assignment_test/27: Fail # Issue 23794
conditional_property_assignment_test/28: Fail # Issue 23794
conditional_property_assignment_test/29: Fail # Issue 23794
conditional_property_assignment_test/30: Fail # Issue 23794
conditional_property_assignment_test/31: Fail # Issue 23794
conditional_property_assignment_test/32: Fail # Issue 23794
conditional_property_assignment_test/33: Fail # Issue 23794
conditional_property_assignment_test/34: Fail # Issue 23794
conditional_property_assignment_test/35: Fail # Issue 23794
conditional_property_increment_decrement_test/17: Fail # Issue 23794
conditional_property_increment_decrement_test/18: Fail # Issue 23794
conditional_property_increment_decrement_test/19: Fail # Issue 23794
conditional_property_increment_decrement_test/20: Fail # Issue 23794
conditional_property_increment_decrement_test/21: Fail # Issue 23794
conditional_property_increment_decrement_test/22: Fail # Issue 23794
conditional_property_increment_decrement_test/23: Fail # Issue 23794
conditional_property_increment_decrement_test/24: Fail # Issue 23794
conditional_property_increment_decrement_test/25: Fail # Issue 23794
conditional_property_increment_decrement_test/26: Fail # Issue 23794
conditional_property_increment_decrement_test/27: Fail # Issue 23794
conditional_property_increment_decrement_test/28: Fail # Issue 23794
conditional_property_increment_decrement_test/29: Fail # Issue 23794
conditional_property_increment_decrement_test/30: Fail # Issue 23794
conditional_property_increment_decrement_test/31: Fail # Issue 23794
conditional_property_increment_decrement_test/32: Fail # Issue 23794
conditional_property_increment_decrement_test/33: Fail # Issue 23794
conditional_property_increment_decrement_test/34: Fail # Issue 23794
conditional_property_increment_decrement_test/35: Fail # Issue 23794
conditional_property_increment_decrement_test/36: Fail # Issue 23794
conditional_property_increment_decrement_test/37: Fail # Issue 23794
conditional_property_increment_decrement_test/38: Fail # Issue 23794
conditional_property_increment_decrement_test/39: Fail # Issue 23794
conditional_property_increment_decrement_test/40: Fail # Issue 23794
if_null_assignment_behavior_test/31: Fail # Issue 23794
if_null_assignment_behavior_test/32: Fail # Issue 23794

[ $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 14651.
generic_test: Fail # Issue 14651.
list_literal4_test: Fail # Issue 14651.
map_literal4_test: Fail # Issue 14651.
named_parameters_type_test/01: Fail # Issue 14651.
named_parameters_type_test/02: Fail # Issue 14651.
named_parameters_type_test/03: Fail # Issue 14651.
positional_parameters_type_test/01: Fail # Issue 14651.
positional_parameters_type_test/02: Fail # Issue 14651.
type_checks_in_factory_method_test: Fail # Issue 14651.
vm/type_vm_test: Fail # Issue 14651.

[ $compiler == none && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
issue13474_test: Pass, Fail # Issue 14651.
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
vm/debug_break_enabled_vm_test/*: Skip # Issue 14651.

[ $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: SkipSlow # Times out. Issue 20352

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

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

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

[ $compiler == none && ( $runtime == dartium || $runtime == drt ) ]
mixin_super_test: Fail # Can't pass VMOptions to dartium.
mixin_super_bound2_test: Fail # Can't pass VMOptions to dartium.
issue23244_test: Fail # Can't run spawnFunction on dartium.
