# Copyright (c) 2013, 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 ]
# not clear: null..[1](1)[2](2).foo(3, bar: 4)=5 - it seems that verything before =5 it not assignable
Language/07_Classes/6_Constructors/1_Generative_Constructors_A04_t15: fail

# invalid argument for constant constructor
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t02: fail

# TBF: _f is private, so does not collide
Language/07_Classes/1_Instance_Methods_A05_t08: fail

# TBD: should we check that argument for dynamic parameter of constant constructor is not compatible with operation that is performed with it?
Language/12_Expressions/01_Constants_A16_t03: fail

# TBD: should we report _error_ when constant creation uses arguments with types incompatible with parameters?
Language/12_Expressions/12_Instance_Creation/2_Const_A09_t02: fail
Language/12_Expressions/12_Instance_Creation/2_Const_A09_t03: fail

# TBF: infinite look: class A {const A();final m = const A();}
Language/12_Expressions/01_Constants_A17_t03: fail

# analyzer issue https://code.google.com/p/dart/issues/detail?id=11534
Language/15_Types/4_Interface_Types_A11_t01: Skip
Language/15_Types/4_Interface_Types_A11_t02: Skip

# TBF: Hence, a static warning will not be issued if f has no declared return type, since the return type would be dynamic and dynamic may be assigned to void.
Language/13_Statements/11_Return_A07_t01: fail

# co19 issue #442, undefined name "Expect"
Language/15_Types/4_Interface_Types_A08_t03: fail, OK

# co19 issue #455, undeclared identifier is static warning
Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t10: fail, OK
Language/14_Libraries_and_Scripts/1_Imports_A02_t12: fail, OK
Language/14_Libraries_and_Scripts/1_Imports_A02_t15: fail, OK

# co19 issue #438, Static variables are initialized lazily, need not be constants
Language/12_Expressions/01_Constants_A16_t01: fail, OK
Language/12_Expressions/01_Constants_A16_t02: fail, OK

# co19 issue #454 (wrongly closed)
Language/12_Expressions/12_Instance_Creation/1_New_A01_t04: fail, OK

# co19 issue #528, Const: wrong number of type arguments
Language/12_Expressions/12_Instance_Creation_A01_t02: fail, OK
Language/12_Expressions/12_Instance_Creation_A01_t05: fail, OK
Language/12_Expressions/12_Instance_Creation_A01_t06: fail, OK

# co19 issue #433 (wrongly closed), missing @static-warning annotation
Language/12_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t07: fail, OK

# co19 issue #541: tests contain unqualified reference to static members defined in superclass
Language/12_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t07: fail, OK
Language/12_Expressions/30_Identifier_Reference_A14_t03: fail, OK

# co19 issue #543: invocation of a non-function
Language/12_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t02: fail, OK

# co19 issue #564: URI can be any number adjacent string literals
Language/14_Libraries_and_Scripts/5_URIs_A01_t24: fail, OK
Language/14_Libraries_and_Scripts/5_URIs_A01_t25: fail, OK

Language/09_Mixins/1_Mixin_Application_A01_t01: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/01_Constants_A22_t01: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/07_Maps_A13_t01: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/12_Instance_Creation_A01_t08: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/13_Property_Extraction_A02_t02: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/13_Property_Extraction_A04_t02: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/13_Property_Extraction_A04_t03: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t03: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A03_t04: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A04_t04: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t05: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/16_Getter_Lookup_A02_t05: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/16_Getter_Lookup_A02_t06: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/17_Getter_Invocation_A07_t01: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/17_Getter_Invocation_A07_t02: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/18_Assignment_A01_t07: Fail # co19-roll r607: Please triage this failure
Language/12_Expressions/18_Assignment_A04_t09: Fail # co19-roll r607: Please triage this failure
Language/13_Statements/02_Expression_Statements_A01_t13: Fail # co19-roll r607: Please triage this failure
Language/15_Types/3_Type_Declarations/1_Typedef_A07_t08: Fail # co19-roll r607: Please triage this failure
Language/15_Types/3_Type_Declarations/1_Typedef_A07_t09: Fail # co19-roll r607: Please triage this failure
LibTest/collection/HasNextIterator/HasNextIterator_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/collection/LinkedHashSet/LinkedHashSet.from_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/collection/LinkedList/LinkedList_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/collection/LinkedList/first_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/collection/LinkedList/reduce_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isAccessor_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isAccessor_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isGetter_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isGetter_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isMethod_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isMethod_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isSetter_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/isSetter_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/memberName_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/namedArguments_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Invocation/positionalArguments_A01_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/RuneIterator/currentAsString_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/RuneIterator/current_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Runes/isEmpty_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Runes/isNotEmpty_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Runes/lastWhere_A02_t01: Fail # co19-roll r607: Please triage this failure
LibTest/core/Runes/length_A01_t02: Fail # co19-roll r607: Please triage this failure
LibTest/core/Symbol/Symbol_A01_t04: Fail # co19-roll r607: Please triage this failure
