# Copyright (c) 2017, 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 == app_jitk ]
main/no_main_test/01: Crash
number/web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
unsorted/disassemble_test: SkipByDesign # Tested in JIT mode.
vm/regress_27671_test: SkipByDesign # Relies on string comparison of exception message which may return '<optimized out>'

[ $compiler == dartkp ]
number/web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
unsorted/disassemble_test: SkipByDesign # JIT only test

[ $compiler == fasta ]
number/web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets

[ $arch == ia32 && $mode == debug ]
*: Pass, Slow # The CFE is not run from AppJit snapshot, JIT warmup in debug mode very slow

[ $builder_tag == obfuscated && $compiler == dartkp ]
generic/function_dcall_test/01: SkipByDesign # Prints type names
mixin/generic_test: SkipByDesign # Prints type names
mixin/mixin3_test: SkipByDesign # Prints type names
mixin/mixin5_test: SkipByDesign # Prints type names
mixin/mixin6_test: SkipByDesign # Prints type names
mixin/mixin_bound2_test: SkipByDesign # Prints type names
unsorted/many_named_arguments_test: SkipByDesign # Checks names of arguments
unsorted/symbol_literal_test/02: SkipByDesign # We don't obfuscate const Symbol constructor
vm/bool_check_stack_traces_test: SkipByDesign # Looks for filenames in stacktrace output
vm/no_such_args_error_message_vm_test: SkipByDesign # Looks for function name in error message
vm/no_such_method_error_message_callable_vm_test: SkipByDesign # Expects unobfuscated method names
vm/no_such_method_error_message_vm_test: SkipByDesign # Looks for unobfuscated name in error message

[ $compiler == dartk && $mode == debug && $hot_reload ]
async_star/async_star2_test/01: Crash
async_star/async_star2_test/05: Crash

[ $compiler == dartk && $mode == debug && ($hot_reload || $hot_reload_rollback) ]
enum/duplicate_test/02: Crash # Issue 34606
enum/duplicate_test/none: Crash # Issue 34606
enum/private_test/01: Crash # Issue 34606
unsorted/inference_enum_list_test: Skip # Issue 35885

[ $compiler == dartk && $mode == product && $runtime == vm ]
vm/lazy_async_exception_stack2_test: SkipByDesign
vm/lazy_async_exception_stack_test: SkipByDesign

# ===== dartk + vm status lines =====
[ $compiler == dartk && $runtime == vm ]
const/const2_test: Crash # Flaky
main/no_main_test/01: Skip
mixin/illegal_super_use_test: Skip # Issues 24478 and 23773
mixin/illegal_superclass_test: Skip # Issues 24478 and 23773
unsorted/disassemble_test: Slow, Crash # dartbug.com/34971
vm/closure_memory_retention_test: Skip # KernelVM bug: Hits OOM
vm/regress_29145_test: Skip # Issue 29145
web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets

[ $compiler == dartk && $hot_reload_rollback ]
symbol/conflict_test: Slow, Pass

[ $compiler == dartk && ($hot_reload || $hot_reload_rollback) ]
async_star/async_star2_test/01: Skip # Timeout
async_star/async_star2_test/02: Skip # Timeout
async_star/async_star2_test/03: Skip # Timeout
async_star/async_star2_test/04: Skip # Timeout
async_star/async_star2_test/05: Skip # Timeout
async_star/async_star2_test/none: Skip # Timeout
type_constants_test/none: Skip # Deferred libraries and hot reload.

[ $compiler == dartkp && $mode == debug && $runtime == dart_precompiled ]
vm/precompiled_static_initializer_test: Slow, Pass

# ==== dartkp + dart_precompiled status lines ====
[ $compiler == dartkp && $runtime == dart_precompiled ]
assert/with_type_test_or_cast_test: Crash
const/const2_test: Skip # Incompatible flag: --compile_all
const/evaluation_test: SkipByDesign
deferred/redirecting_factory_test: Crash # Issue 23408, KernelVM bug: Deferred loading kernel issue 30273.
export/ambiguous_main_test: Skip # Issue 29895 Fail Issue 14763
export/double_same_main_test: Skip # Issue 29895 Crash Issue 29895
field/increment_bailout_test: SkipByDesign
generic_methods_recursive_bound_test/03: Crash
main/no_main_test/01: Skip
main/not_a_function_test: Skip
mixin/illegal_super_use_test: Skip # Issues 24478 and 23773
mixin/illegal_superclass_test: Skip # Issues 24478 and 23773
no_such_method/many_overridden_test.dart: SkipByDesign
null_test/mirrors: Skip # Uses mirrors.
null_test/none: SkipByDesign
optimize/deopt_inlined_function_lazy_test: Skip # Incompatible flag: --deoptimize-alot
unsorted/hello_dart_test: Skip # Incompatible flag: --compile_all
unsorted/invocation_mirror2_test: SkipByDesign
vm/closure_memory_retention_test: Skip # KernelVM bug: Hits OOM
vm/lazy_async_exception_stack2_test: SkipByDesign
vm/lazy_async_exception_stack_test: SkipByDesign
vm/reflect_core_vm_test: SkipByDesign
vm/regress_27671_test: Skip # Unsupported
vm/regress_29145_test: Skip # Issue 29145

[ $compiler == dartkp && $runtime == dart_precompiled && $checked ]
assert/initializer_const_error2_test/cc01: Crash
assert/initializer_const_error2_test/cc02: Crash
assert/initializer_const_error2_test/cc03: Crash
assert/initializer_const_error2_test/cc04: Crash
assert/initializer_const_error2_test/cc05: Crash
assert/initializer_const_error2_test/cc06: Crash
assert/initializer_const_error2_test/cc07: Crash
assert/initializer_const_error2_test/cc08: Crash
assert/initializer_const_error2_test/cc09: Crash
assert/initializer_const_error2_test/cc10: Crash
assert/initializer_const_error2_test/cc11: Crash

[ $compiler == dartkp && $system == windows ]
unsorted/disassemble_test: Slow, Pass

[ $mode == debug && $runtime == vm && ($compiler == app_jitk || $compiler == dartk) ]
optimize/deopt_inlined_function_lazy_test: Skip
