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

