# 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


# 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

# 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

# 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  , disallow default values in redirecting factories
redirecting_factory_default_values_test/none: fail # Issue 14471

# 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

# test issue 14289
bailout3_test: fail # test issue 14289
prefix9_test: fail # test issue 14289

# test issue 14358, E does not implement inherited A.+
type_promotion_closure_test/none: Fail

# test issue 14362, wrong assumption that dynamic << A
type_promotion_functions_test/none: Fail

# test issue 14363, "if ((a is B))" has the same effect as "if (a is B)", so no static warning expected
type_promotion_parameter_test/53: Fail

# test issue 14364, "E<A> << D"
type_promotion_more_specific_test/08: fail

# test issue 14406, setter for final field was removed from spec
implicit_setter_test/01: fail
implicit_setter_test/02: fail

# test issue 14410, "typedef C = " is now really illegal syntax
mixin_illegal_syntax_test/none: fail

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

