# Copyright (c) 2012, 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 == dartanalyzer ]
switch_bad_case_test/02: Fail # missing error in double in switch case expr

# Runtime negative test. No static errors or warnings.
closure_call_wrong_argument_count_negative_test: skip

# TBD: using built-in identifers
built_in_identifier_prefix_test: fail # Issue 12694

# TBD: these look like bad tests, no issue number
class_literal_test: fail
constructor_call_as_function_test/01: fail

# TBF: It is a static type warning if a type parameter is a supertype of its upper bound.
cyclic_type_variable_test/01: fail
cyclic_type_variable_test/02: fail
cyclic_type_variable_test/03: fail
cyclic_type_variable_test/04: fail

# TBF: It is a static type warning if any of the type arguments to k' are not subtypes of the bounds of the corresponding formal type parameters of type.
default_factory2_test/01: fail # Issue 12701

# TBF: It is a static warning if the function type of k' is not a subtype of the type of k.
default_implementation2_test: fail

# TBD: F-bounded quantification
f_bounded_quantification_test/01: fail # Issue 12704
f_bounded_quantification_test/02: fail # Issue 12704

function_type_alias9_test/00: crash # Issue 11987

list_literal_syntax_test/01: fail # Issue 12103
list_literal_syntax_test/02: fail # Issue 12103
list_literal_syntax_test/03: fail # Issue 12103
malformed_test/none: fail # Issue 12696

# TBF: we should check conflicts not only for methods, but for accessors too
override_field_test/02: fail
override_field_test/03: fail
method_override7_test/03: Fail # Issue 11496
method_override8_test/03: Fail # Issue 11496

# TBF: prefix T hidden by type variable T in 'new T.Class()'
prefix10_negative_test: fail

# TBF: no error if A in our library, B extends A in other library, reference B._private from Test extends B in our library.
private_member1_negative_test: fail
private_member2_negative_test: fail
private_member3_negative_test: fail

built_in_identifier_test/none: Fail # Issue 13023

# test issue 10683, It is a compile-time error if e refers to the name v or the name v=.
block_scope_test: fail
lazy_static3_test: fail

field3a_negative_test: Fail # Issue 11124
final_syntax_test/01: Fail # Issue 11124
final_syntax_test/04: Fail # Issue 11124
final_syntax_test/02: Fail # Issue 11124
final_syntax_test/03: Fail # Issue 11124

# Test issue 11123, Only static fields can be declared as 'const'
const_escape_frog_test: fail
compile_time_constant_test/none: fail

# Test issue 11545, using not existing constructor name in annotation
metadata_test: fail

# test issue 11575, classes with abstrac members are not marked as abstract
abstract_factory_constructor_test/none: fail # Issue 11575
get_set_syntax_test/none: fail # Issue 11575
implicit_this_test/none: fail # Issue 11575
interface_test/none: fail # Issue 11575
syntax_test/none: fail # Issue 11575

# test issue 11576
bad_constructor_test/none: fail # Issue 11576

# test issue 11577, has return type for []=
cascade_test/none: fail # Issue 11577

# test issue 11578, redirecting factory with not subtype
factory5_test/none: fail # Issue 11578
factory_redirection_test/none: fail # Issue 11578
type_variable_bounds_test/none: fail # Issue 11578
type_variable_scope_test/none: fail # Issue 11578
factory_implementation_test/none: fail # Issue 11578

redirecting_factory_malbounded_test/none: Fail # Issue 12827

# test issue 11579, assignment, no setter
getter_no_setter_test/none: fail

# test issue 11581, it is not warning to call dynamic
call_through_getter_test: fail

# test issue 11584, positional arguments cannot be used for named parameters
compile_time_constant_e_test: fail

# test issue 11585, static warning, not negative test
constructor3_negative_test: fail
constructor_call_wrong_argument_count_negative_test: fail
instance_call_wrong_argument_count_negative_test: fail

# test issue 11589, export D from 2 export directives
export_cyclic_test: fail

# test issue 11590, runtime only negative test
field_method4_negative_test: fail

# test issue 11592, Function type alias (typedef) is not a constant
first_class_types_constants_test: fail

# test issue 11594, Reference to a not resolve identifier is static warning
import_combinators_negative_test: fail
interface_static_non_final_fields_negative_test: fail

# test issue 11698, no setter, so warning, not error
assign_instance_method_negative_test: fail

# test issue 11918: mixin and const constructor
const_constructor_mixin_test/01: fail
const_constructor_mixin3_test/01: fail

# test issue 11958, fails only at runtime
no_such_method_negative_test: fail

# test issue 11962, it is warning, not error to reference undeclared identifier
prefix1_negative_test: fail
prefix2_negative_test: fail
prefix4_negative_test: fail
prefix5_negative_test: fail
prefix12_negative_test: fail

# test issue 11963, it is fine to access any property of the dynamic variable
prefix6_negative_test: fail

# test issue 11964, Any use of a malformed type gives rise to a static warning.
prefix8_negative_test: fail
prefix11_negative_test: fail

# test issue 12156, fails only at runtime
static_call_wrong_argument_count_negative_test: fail

constructor9_test/01: Fail # Issue 12157

throw7_test/01: Fail # Issue 12159

# test issue 12160, not annotated warnings for type variables from static member
type_parameter_test/none: fail
# test issue 12161, type variable in static, malformed type, static warning
type_variable_static_context_negative_test: fail

# test issue 12162, 'a' has dynamic type, so it statically it is assignable to anything
type_variable_bounds2_test/00: fail # Issue 12162
type_variable_bounds2_test/01: fail # Issue 12162
type_variable_bounds2_test/02: fail # Issue 12162
type_variable_bounds2_test/03: fail # Issue 12162
type_variable_bounds2_test/04: fail # Issue 12162
type_variable_bounds2_test/06: fail # Issue 12162

# test issue 12163, unresolved identifier is static warning in static context
unresolved_in_factory_negative_test: fail # Issue 12163
unresolved_top_level_var_negative_test: fail # Issue 12163

# test issue 12191, ambiguous import is always warning now
prefix3_negative_test: fail # Issue 12191

# test issue 12289, assignment in assert statement
type_error_test: fail # Issue 12289

# test issue 12381, It is compile-time error to invoke not existing function
issue11724_test: fail # Issue 12381
call_nonexistent_static_test/08: fail # Issue 12381

scope_variable_test/01: fail # Issue 12397

# test issue 12539, rules for finals were loosened, contradiction in spec was fixed
const_syntax_test/09: fail # Issue 12539

# test issue 12541; there shouldn't be a static warning
static_field_test/01: fail # Issue 12541
static_field_test/02: fail # Issue 12541
static_field_test/03: fail # Issue 12541
static_field_test/04: fail # Issue 12541

[ $compiler == dartanalyzer && $checked ]
factory1_test/00: fail
factory1_test/01: fail
field_type_check2_test/01: fail
factory_implementation_test/00: fail
factory_redirection_test/08: fail
factory_redirection_test/09: fail
factory_redirection_test/10: fail
factory_redirection_test/11: fail
factory_redirection_test/12: fail
factory_redirection_test/13: fail
factory_redirection_test/14: fail
getters_setters2_test/03: fail
type_variable_bounds3_test/00: fail
type_variable_bounds2_test/05: fail

