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

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

[ $fasta ]
nnbd/*: Skip
superinterface_variance/mixin_error_test/37: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/38: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/40: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/41: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/42: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/43: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/44: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/46: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/47: Crash # Issue dart-lang/language#113
superinterface_variance/mixin_error_test/48: Crash # Issue dart-lang/language#113

[ $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 || $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/causal_async_exception_stack2_test: SkipByDesign
vm/causal_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) ]
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/causal_async_exception_stack2_test: SkipByDesign
vm/causal_async_exception_stack_test: SkipByDesign
vm/closure_memory_retention_test: Skip # KernelVM bug: Hits OOM
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

[ $mode == debug && ($hot_reload || $hot_reload_rollback) ]
regress/regress41983_test: Pass, Slow
