# 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 == dart2analyzer ]
# 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 warning if the function type of k' is not a subtype of the type of k.
default_implementation2_test: fail

function_type_alias9_test/00: crash # Issue 11987

# 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

built_in_identifier_test/none: Fail # Issue 13023

# test issue 13807, missing support for type promotion
type_promotion_closure_test/none: Fail # Issue 13807
type_promotion_functions_test/none: Fail # Issue 13807
type_promotion_local_test/none: Fail # Issue 13807
type_promotion_logical_and_test/none: Fail # Issue 13807
type_promotion_multiple_test/none: Fail # Issue 13807
type_promotion_parameter_test/none: Fail # Issue 13807

# Missing checks for cyclic typedefs (through bounds)
cyclic_typedef_test/10: Fail # Issue 13906
cyclic_typedef_test/11: Fail # Issue 13906


# Please add new failing tests before this line.
# Section below is for invalid tests.
#
#




# 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

# test issue 11124, It is warning, not error to don't initialize final field
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 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
type_variable_bounds_test/none: fail # Issue 11578
type_variable_scope_test/none: fail # Issue 11578
factory_implementation_test/none: fail # Issue 11578

# 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

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

# test issue 13787; duplicate exports of the same declaration is not handled
duplicate_export_test: fail # Issue 13787

# test issue 13916, Looks as no warning should be in this redirecting factory
redirecting_factory_infinite_steps_test/01: fail

# test issue 13956, 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/none: fail

# test issue 14021, it is warning, not an error to reference private (undefined) identifier
private_member1_negative_test: fail
private_member2_negative_test: fail
private_member3_negative_test: fail

# test issue 14079
malformed_test/none: fail # test issue 14079, legit warnings for malformed type
malformed_test/05: fail # test issue 14079, it is not error, but warning to instantiate malformed type
malformed_test/06: fail # test issue 14079, it is not error, but warning to use malformed type in "try-on" clause

# test issue 14228
black_listed_test/none: fail # test issue 14228, warnings are required but not expected

#
# Please don't add new items here.
# This is section for invalid tests.
#

[ $compiler == dart2analyzer && $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

