# 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 == dart2analyzer ]
html/debugger_test: CompileTimeError # Issue 28969
html/element_types_keygen_test: CompileTimeError # Chrome 57 keygen removed
html/js_function_getter_trust_types_test: Skip # dart2js specific flags.
html/js_typed_interop_default_arg_test/default_value: MissingCompileTimeError # Issue #25759
mirrors/deferred_type_test: StaticWarning, OK # Deliberately refers to a deferred type in a declaration.
mirrors/generic_f_bounded_mixin_application_test: StaticWarning # Test Issue
mirrors/mirrors_nsm_mismatch_test: StaticWarning, OK
mirrors/mirrors_nsm_test: StaticWarning, OK
mirrors/mirrors_nsm_test/dart2js: StaticWarning, OK
mirrors/redirecting_factory_test/01: StaticWarning # test issue X, The return type 'Class<T2, T1>' of the redirected constructor is not assignable to 'Class<T1, T2>'
mirrors/redirecting_factory_test/none: StaticWarning # test issue X, The return type 'Class<T2, T1>' of the redirected constructor is not assignable to 'Class<T1, T2>
mirrors/repeated_private_anon_mixin_app_test: StaticWarning, OK # Intentional library name conflict.

[ $compiler == dart2analyzer && $strong ]
mirrors/deferred_type_test: CompileTimeError, OK # Deliberately refers to a deferred type in a declaration.
mirrors/generic_f_bounded_mixin_application_test: CompileTimeError
mirrors/mirrors_nsm_mismatch_test: CompileTimeError, OK
mirrors/mirrors_nsm_test: CompileTimeError, OK
mirrors/mirrors_nsm_test/dart2js: CompileTimeError, OK
mirrors/repeated_private_anon_mixin_app_test: CompileTimeError, OK # Intentional library name conflict.
