# 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 == dartanalyzer ]
# not clear: g([var foo = foo + 10]) is parameter 'foo' in the scope of its own initialzer?
Language/06_Functions/2_Formal_Parameters_A02_t02: fail

# 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

# TBF: typedef int func2(int); - "int is not a type"
Language/15_Types/6_Type_dynamic_A03_t01: fail
Language/15_Types/6_Type_dynamic_A04_t01: fail


LibTest/core/Uri/decodeQueryComponent_A02_t01: fail # co19 Issue 591

# co19 issue #380, Strings class has been removed
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A04_t01: fail, OK

# co19 issue #400, collection library reorg
LibTest/core/String/concat_A01_t01: fail, OK
LibTest/core/String/concat_A02_t01: fail, OK
LibTest/core/Set/isSubsetOf_A01_t01: fail, OK
LibTest/core/Set/isSubsetOf_A01_t02: fail, OK

# co19 issue #425, Only static fields can be declared as 'const'
Language/05_Variables/05_Variables_A12_t01: fail, OK
Language/05_Variables/05_Variables_A12_t06: fail, OK
Language/05_Variables/05_Variables_A13_t01: fail, OK
Language/07_Classes/07_Classes_A02_t11: fail, OK

# 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/13_Statements/04_Local_Function_Declaration_A02_t02: 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 #513, rules for finals were loosened, contradiction in spec was fixed
Language/07_Classes/6_Constructors/1_Generative_Constructors_A21_t01: fail, OK

# co19 issue #515, it is a compile-time error if there is more than one entity with the same name declared in the same scope
Language/07_Classes/3_Setters_A08_t03: fail, OK

# co19 issue #593: Conditional expressions are now allowed as constant expressions
Language/12_Expressions/01_Constants_A15_t16: 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 #420, "throw" requires expression, "rethrow" should be used instead
Language/12_Expressions/08_Throw_A05_t01: fail, OK
Language/12_Expressions/08_Throw_A05_t02: fail, OK
Language/12_Expressions/08_Throw_A05_t03: 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_t01: fail, OK
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 #562: malformed superclass
Language/14_Libraries_and_Scripts/1_Imports_A03_t27: fail, OK

# co19 issue #563: implicitly named libraries are allowed
Language/14_Libraries_and_Scripts/2_Exports_A05_t01: 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

# co19 issue #596: initializing final variable at declaration and in constructor
Language/07_Classes/6_Constructors/1_Generative_Constructors_A12_t02: fail, OK
Language/07_Classes/6_Constructors/1_Generative_Constructors_A20_t02: fail, OK

# co19 issue #597: concrete class with abstract method
Language/07_Classes/4_Abstract_Instance_Members_A07_t08: fail, OK

