# 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 ]
mixin_super_constructor_named_test: Fail # Issue 12631
mixin_super_constructor_positionals_test: Fail # Issue 12631
built_in_identifier_prefix_test: Fail # Issue 6970

# 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
mixin_forwarding_constructor2_test: Fail # Issue 13641

# These test use the old syntax, and will be phased out.
deferred_constraints_constants_old_syntax_test/reference1: Fail, Ok
deferred_constraints_constants_old_syntax_test/reference2: Fail, Ok
deferred_constraints_constants_old_syntax_test/metadata1: Fail, Ok
deferred_constraints_constants_old_syntax_test/metadata2: Fail, Ok
deferred_constraints_constants_old_syntax_test/metadata3: Fail, Ok
deferred_constraints_constants_old_syntax_test/default_argument1: Fail, Ok
deferred_constraints_constants_old_syntax_test/default_argument2: Fail, Ok
deferred_constraints_constants_old_syntax_test/constructor1: Fail, Ok
deferred_constraints_constants_old_syntax_test/constructor2: Fail, Ok

[ $runtime != vm ]
# Async tests are currently only supported by the vm.
async_test/*: Skip
async_control_structures_test: Skip

[ $compiler == dart2dart]
# Async tests are not yet supported in dart2dart.
async_test/*: Skip
async_control_structures_test: Skip
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

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

[ $compiler == none || $compiler == dart2dart]
# These test use the old syntax, and will be phased out.
deferred_constraints_type_annotation_old_syntax_test/as_operation: Fail, Ok
deferred_constraints_type_annotation_old_syntax_test/is_check: Fail, Ok
deferred_constraints_type_annotation_old_syntax_test/catch_check: Fail, Ok
deferred_constraints_type_annotation_old_syntax_test/new_before_load: Fail, Ok

# 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

[ ($compiler == none || $compiler == dart2dart) && $checked ]
# Issue 17521, 17523
# Dart2dart does not support deferred loading.
deferred_constraints_type_annotation_old_syntax_test/type_annotation1: Fail
deferred_constraints_type_annotation_old_syntax_test/type_annotation_generic1: Fail
deferred_constraints_type_annotation_old_syntax_test/type_annotation_generic4: Fail

[ $compiler == none || $compiler == dartanalyzer || $compiler == dart2analyzer ]
# Issue 17521, 17522
deferred_no_prefix_old_syntax_test/01: Fail
deferred_duplicate_prefix1_old_syntax_test/01: Fail
deferred_duplicate_prefix2_old_syntax_test/01: Fail
deferred_duplicate_prefix3_old_syntax_test/01: Fail

[ $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 && $unchecked ]
# Only checked mode reports an error on type assignment
# problems in compile time constants.
type_check_const_function_typedef2_test/00: Fail, OK

[ $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 == dart2js && $runtime == ie9 ]
lazy_static3_test: Fail # Issue 13469

[ $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 # http://dartbug.com/20028
main_test/02: Fail # http://dartbug.com/20028
main_test/04: Fail # http://dartbug.com/20028
main_test/05: Fail # http://dartbug.com/20028
main_test/21: Fail # http://dartbug.com/20028
main_test/42: Fail # http://dartbug.com/20028

[ $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


