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

bigint_parse_radix_test/3: Slow # Issue http://dartbug.com/47050
bigint_test: Pass, Slow

[ $compiler == dartkp ]
bigint_parse_radix_test: Slow, Pass # --no_intrinsify
bigint_test/03: SkipSlow # --no_intrinsify
bigint_test/15: SkipSlow # --no_intrinsify

[ $mode == debug ]
regexp/pcre_test: Slow, Pass # Issue 22008

[ $system == android ]
throw_half_surrogate_pair_test/*: Skip # Issue http://dartbug.com/42094

[ $arch == x64 && $system == windows ]
stopwatch_test: Skip # Flaky test due to expected performance behaviour.

[ $builder_tag == obfuscated && $runtime == dart_precompiled ]
apply_generic_function_test: SkipByDesign # Function.apply with named args
apply_test: Skip # Uses new Symbol via symbolToStringMap helper
dynamic_nosuchmethod_test: SkipByDesign # Expects names in NSM
error_stack_trace1_test: SkipByDesign # Expects unobfuscated stack trace
type_tostring_test: SkipByDesign # Expects names in Type.toString()

[ $compiler != dart2analyzer && $compiler != dart2js && $compiler != dartdevc && $compiler != dartdevk ]
bigint_js_test: SkipByDesign # JavaScript-specific test

[ $compiler == dart2js && $runtime != none ]
regexp/pcre_test: Slow, Pass # Issue 21593

# We no longer expect Dart2 tests to run with the standalone VM without the new
# common front end, but for now we get better coverage by still running them in
# checked mode, which is mostly Dart2-compatible.
[ $compiler == none && !$checked && ($runtime == dart_precompiled || $runtime == vm) ]
*: SkipByDesign

[ $runtime != dart_precompiled && $runtime != vm ]
reg_exp_receive_port_test: SkipByDesign # uses SendPort/ReceivePort

[ $runtime != none && ($compiler == dart2js || $compiler == dartdevc || $compiler == dartdevk) ]
int_parse_with_limited_ints_test: SkipByDesign # Requires fixed-size int64 support.
integer_arith_vm_test: SkipByDesign # Is a VM optimization test that requires int64 support.
iterable_return_type_int64_test: SkipByDesign # Requires int64 support.
typed_data_with_limited_ints_test: SkipByDesign # Requires fixed-size int64 support.

[ $arch == simarm || $arch == simarm64 || $arch == simarm64c || $arch == simriscv32 || $arch == simriscv64 ]
bigint_parse_radix_test: Skip # Issue 31659
bigint_test: Skip # Issue 31659

[ $compiler == dartdevc || $compiler == dartdevk ]
bigint_test/03: SkipSlow # modPow is very slow
bigint_test/15: SkipSlow # modPow is very slow
list_concurrent_modify_self_test: SkipSlow # missing check causes list to grow to whole heap
regexp/lookbehind_test/01: Skip # Flaky in uncatchable way.  Issue 36280
uri_parse_test: Slow, Pass
uri_test: Slow, Pass

[ $runtime == dart_precompiled || $runtime == vm ]
regexp/global_test: Skip # Issue 21709
regexp/pcre_test: Slow, Pass

[ $hot_reload || $hot_reload_rollback ]
bigint_parse_radix_test: Skip # Issue 31659. Issue 34361.
bigint_test: Skip # Issue 31659
integer_parsed_mul_div_vm_test: Slow, Pass # Slow
