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

# 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
const_syntax_test/01: Fail # Issue 11124
const_syntax_test/04: Fail # Issue 11124
const_syntax_test/02: Fail # Issue 11124
const_syntax_test/03: 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 11591, assigning to the final variable is warning, not error
getter_no_setter_test/01: 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

instantiate_type_variable_test/01: fail # Issue 11595

# 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

static_final_field2_test/02: Fail # Issue 13018
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
library_ambiguous_test/00: 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

