# 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.
# Sections in this file should contain "$compiler == dart2js".

[ $compiler == dart2js ]
external_abstract_fields/external_fields_test: SkipByDesign # Non-JS-interop external members are not supported
mixin_method_override_test/G5: Skip # Issue 34354
number/int64_literal_runtime*_test: Skip # This is testing Dart 2.0 int64 semantics
vm/*: SkipByDesign # Tests for the VM.

[ $compiler != dart2js ]
closure/minify_closure_variable_collision_test: SkipByDesign # Regression test for dart2js

[ $builder_tag == dart2js_production && $compiler == dart2js ]
control_flow_collections/for_non_bool_condition_test: Crash # Issue 36442

[ $compiler == dart2js && $runtime == chromeOnAndroid ]
override_field_test/02: Slow, Pass # TODO(kasperl): Please triage.

[ $compiler == dart2js && $runtime == d8 ]
import/conditional_string_test: SkipByDesign # No XHR in d8

[ $compiler == dart2js && $runtime == jsshell ]
await/for_test: Skip # Jsshell does not provide periodic timers, Issue 7728

[ $compiler == dart2js && $system == windows ]
canonicalize/hashing_memoize_array_test: Skip # Issue 37631
canonicalize/hashing_memoize_instance_test: Skip # Issue 37631
canonicalize/hashing_shallow_collision_array_test: Skip # Issue 37631
canonicalize/hashing_shallow_collision_instance_test: Skip # Issue 37631
