# Copyright (c) 2017, 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.

# Each entry in this map corresponds to a diagnostic message. Ideally, each
# entry contains three parts:
#
# 1. A message template (template).
#
# 2. A suggestion for how to correct the problem (tip).
#
# 3. Examples that produce the message (one of expression, statement,
#    declaration, member, script, bytes or external). Note that 'external'
#    should be the path to an external test. The external test will not be run,
#    but the existance of the file will be verified.
#
# A message shouldn't indicate which kind of diagnostic it is, for example,
# warning or error. Tools are expected to prepend "Warning: ", or "Error: ",
# and should be allowed to change the kind of diagnostic without affecting the
# message. For example, an error might be turned into a warning by the tool.
#
# See the file [lib/src/fasta/diagnostics.md] for more details on how to write
# good diagnostic messages.
#
# A message used for internal errors should have key that starts with
# "InternalProblem". This way, UX review can prioritize it accordingly.
#
# Eventually, we'd like to have all diagnostics in one shared
# location. However, for now, dart2js and the analyzer needs to translate error
# codes to their own format. To support this, an entry can contain an analyzer
# error code (analyzerCode) and a dart2js error code (dart2jsCode).
#
# For dart2js, there's a few special error codes:
#
# - `*ignored*` this error is ignored by dart2js (normally a recoverable parser
#   error that dart2js reports in later phase for historical reasons).
#
# - `*fatal*` this is an error that is considered fatal by dart2js (normally a
#   recoverable parser error that dart2js can't reliably recover from).
#
# dart2js only needs to translate error generated by the parser or scanner, so
# only lexical and syntactical errors have a code for dart2js. Long term, we
# assume that dart2js will rely solely on the front-end to report errors.
#
# Long term, the analyzer and front-end need to share the same error codes. So
# eventually all error codes should have an `analyzerCode` field.
#
# In some cases a mesage is internal to the frontend, and no meaningful dart2js
# nor analyzer code can be provided. In such cases set `frontendInternal: true`.
#
# ## Parameter Substitution in Template and Tip
#
# The fields `template` and `tip` are subject to parameter substitution. When
# the compiler reports a problem, it may also specify a map with the following
# keys to be substituted into the message:
#
# `#character` a Unicode character.
#
# `#unicode` a Unicode short identifier (U+xxxx). We use this to represent code
#  units or code points.
#
# `#name`, `#name2`, `#name3`: names (as strings).
#
# `#lexeme` a token. The token's `lexeme` property is used.
#
# `#string`, `#string2`, `#string3`: strings (that aren't names).
#    Note: as a rule of thumb, avoid using the `#string` keys. In particular,
#    do not use them for composing error messages, see [diagnostics.md](
#    lib/src/fasta/diagnostics.md#avoid-composing-messages-programmatically).
#
# `#type`, #type2`: Kernel types.
#
# `#uri`, `#uri2`, `#uri3`: URIs.
#
# `#count`, `#count2`: counts (as integers)
#
# `#constant` a Kernel constant.
#
# `#num1%N.M`, `#num2%N.M`, `#num3%N.M`: numbers (doubles) formatted to minimum
# width N and with M fraction digits.

AsciiControlCharacter:
  template: "The control character #unicode can only be used in strings and comments."
  dart2jsCode: BAD_INPUT_CHARACTER
  analyzerCode: ILLEGAL_CHARACTER
  expression: "\x1b 1"

ConstEvalContext:
  template: "While analyzing:"

ConstEvalDuplicateKey:
  template: "The key '#constant' conflicts with another existing key in the map."
  analyzerCode: EQUAL_KEYS_IN_MAP

ConstEvalNonConstantLiteral:
  template: "Can't have a non-constant #string literal within a const context."
  analyzerCode: NON_CONSTANT_DEFAULT_VALUE

ConstEvalInvalidType:
  template: "Expected constant '#constant' to be of type '#type', but was of type '#type2'."

ConstEvalInvalidBinaryOperandType:
  template: "Binary operator '#string' on '#constant' requires operand of type '#type', but was of type '#type2'."

ConstEvalZeroDivisor:
  template: "Binary operator '#string' on '#string2' requires non-zero divisor, but divisor was '0'."
  dart2jsCode: INVALID_CONSTANT_DIV
  analyzerCode: CONST_EVAL_THROWS_IDBZE

ConstEvalNegativeShift:
  template: "Binary operator '#string' on '#string2' requires non-negative operand, but was '#string3'."
  dart2jsCode: INVALID_CONSTANT_SHIFT

ConstEvalInvalidMethodInvocation:
  template: "The method '#string' can't be invoked on '#constant' within a const context."
  analyzerCode: UNDEFINED_OPERATOR

ConstEvalInvalidStringInterpolationOperand:
  template: "The '#constant' can't be used as part of a string interpolation within a const context, only values of type 'null', 'bool', 'int', 'double', or 'String' can be used."
  analyzerCode: CONST_EVAL_TYPE_BOOL_NUM_STRING

ConstEvalInvalidStaticInvocation:
  template: "The invocation of '#name' is not allowed within a const context."
  analyzerCode: CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE

ConstEvalFailedAssertion:
  template: "This assertion failed."
  analyzerCode: CONST_EVAL_THROWS_EXCEPTION

ConstEvalFailedAssertionWithMessage:
  template: "This assertion failed with message: #string"
  analyzerCode: CONST_EVAL_THROWS_EXCEPTION

ConstEvalNonConstantVariableGet:
  template: "The variable '#string' is not a constant, only constant expressions are allowed."
  analyzerCode: NON_CONSTANT_VALUE_IN_INITIALIZER

NotConstantExpression:
  template: "#string is not a constant expression."
  analyzerCode: NOT_CONSTANT_EXPRESSION
  dart2jsCode: "*fatal*"

NotAConstantExpression:
  template: "Not a constant expression."
  severity: ERROR
  analyzerCode: NOT_CONSTANT_EXPRESSION
  dart2jsCode: "*fatal*"

NonAsciiIdentifier:
  template: "The non-ASCII character '#character' (#unicode) can't be used in identifiers, only in strings and comments."
  tip: "Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign)."
  analyzerCode: ILLEGAL_CHARACTER
  dart2jsCode: BAD_INPUT_CHARACTER
  expression: "å"

NonAsciiWhitespace:
  template: "The non-ASCII space character #unicode can only be used in strings and comments."
  analyzerCode: ILLEGAL_CHARACTER
  dart2jsCode: BAD_INPUT_CHARACTER
  expression: "\u2028 1"

Encoding:
  template: "Unable to decode bytes as UTF-8."
  dart2jsCode: "*fatal*"
  bytes: [255]

EmptyNamedParameterList:
  template: "Named parameter lists cannot be empty."
  tip: "Try adding a named parameter to the list."
  analyzerCode: "MISSING_IDENTIFIER"
  dart2jsCode: EMPTY_NAMED_PARAMETER_LIST
  script: >
    foo({}) {}

    main() {
      foo();
    }

EmptyOptionalParameterList:
  template: "Optional parameter lists cannot be empty."
  tip: "Try adding an optional parameter to the list."
  analyzerCode: "MISSING_IDENTIFIER"
  dart2jsCode: EMPTY_OPTIONAL_PARAMETER_LIST
  script: >
    foo([]) {}

    main() {
      foo();
    }

ExpectedBlock:
  template: "Expected a block."
  tip: "Try adding {}."
  analyzerCode: EXPECTED_TOKEN
  dart2jsCode: "*fatal*"
  script: "try finally {}"

ExpectedBlockToSkip:
  template: "Expected a function body or '=>'."
  # TODO(ahe): In some scenarios, we can suggest removing the 'static' keyword.
  tip: "Try adding {}."
  analyzerCode: MISSING_FUNCTION_BODY
  dart2jsCode: NATIVE_OR_BODY_EXPECTED
  script: "main();"

ExpectedBody:
  template: "Expected a function body or '=>'."
  # TODO(ahe): In some scenarios, we can suggest removing the 'static' keyword.
  tip: "Try adding {}."
  analyzerCode: MISSING_FUNCTION_BODY
  dart2jsCode: BODY_EXPECTED
  script: "main();"

ExpectedStatement:
  template: "Expected a statement."
  analyzerCode: MISSING_STATEMENT
  dart2jsCode: "*fatal*"
  statement: "void;"

ExpectedButGot:
  template: "Expected '#string' before this."
  # Consider the second example below: the parser expects a ')' before 'y', but
  # a ',' would also have worked. We don't have enough information to give a
  # good suggestion.
  analyzerCode: EXPECTED_TOKEN
  dart2jsCode: MISSING_TOKEN_BEFORE_THIS
  script:
    - "main() => true ? 1;"
    - "main() => foo(x: 1 y: 2);"

MultipleLibraryDirectives:
  template: "Only one library directive may be declared in a file."
  tip: "Try removing all but one of the library directives."
  analyzerCode: MULTIPLE_LIBRARY_DIRECTIVES
  dart2jsCode: "*ignored*"

MultipleExtends:
  template: "Each class definition can have at most one extends clause."
  tip: "Try choosing one superclass and define your class to implement (or mix in) the others."
  analyzerCode: MULTIPLE_EXTENDS_CLAUSES
  dart2jsCode: "*ignored*"
  script: "class A extends B extends C {}"

MultipleWith:
  template: "Each class definition can have at most one with clause."
  tip: "Try combining all of the with clauses into a single clause."
  analyzerCode: MULTIPLE_WITH_CLAUSES
  dart2jsCode: "*ignored*"
  script: "class A extends B with C, D with E {}"

WithWithoutExtends:
  template: "The with clause can't be used without an extends clause."
  tip: "Try adding an extends clause such as 'extends Object'."
  analyzerCode: WITH_WITHOUT_EXTENDS
  dart2jsCode: "GENERIC"
  script: "class A with B, C {}"

WithBeforeExtends:
  template: "The extends clause must be before the with clause."
  tip: "Try moving the extends clause before the with clause."
  analyzerCode: WITH_BEFORE_EXTENDS
  dart2jsCode: "*ignored*"
  script: "class A with B extends C {}"

ImplementsBeforeExtends:
  template: "The extends clause must be before the implements clause."
  tip: "Try moving the extends clause before the implements clause."
  analyzerCode: IMPLEMENTS_BEFORE_EXTENDS
  dart2jsCode: "*ignored*"
  script: "class A implements B extends C {}"

ImplementsBeforeWith:
  template: "The with clause must be before the implements clause."
  tip: "Try moving the with clause before the implements clause."
  analyzerCode: IMPLEMENTS_BEFORE_WITH
  dart2jsCode: "*ignored*"
  script: "class A extends B implements C with D {}"

MultipleImplements:
  template: "Each class definition can have at most one implements clause."
  tip: "Try combining all of the implements clauses into a single clause."
  analyzerCode: MULTIPLE_IMPLEMENTS_CLAUSES
  dart2jsCode: "GENERIC"
  script: "class A implements B implements C, D {}"

ExpectedClassBody:
  template: "Expected a class body, but got '#lexeme'."
  analyzerCode: MISSING_CLASS_BODY
  dart2jsCode: "*fatal*"

ExpectedClassBodyToSkip: ExpectedClassBody

ExpectedDeclaration:
  template: "Expected a declaration, but got '#lexeme'."
  analyzerCode: EXPECTED_EXECUTABLE
  dart2jsCode: "*fatal*"

ExpectedClassMember:
  template: "Expected a class member, but got '#lexeme'."
  analyzerCode: EXPECTED_CLASS_MEMBER
  dart2jsCode: "*fatal*"

ExpectedFunctionBody:
  template: "Expected a function body, but got '#lexeme'."
  analyzerCode: MISSING_FUNCTION_BODY
  dart2jsCode: NATIVE_OR_FATAL

ExpectedHexDigit:
  template: "A hex digit (0-9 or A-F) must follow '0x'."
  # No tip, seems obvious from the error message.
  analyzerCode: MISSING_HEX_DIGIT
  dart2jsCode: HEX_DIGIT_EXPECTED
  script: >
    main() {
      var i = 0x;
    }

ExpectedIdentifier:
  template: "Expected an identifier, but got '#lexeme'."
  severity: ERROR
  analyzerCode: MISSING_IDENTIFIER
  dart2jsCode: "*fatal*"
  script: "do() {} main() {}"

EqualityCannotBeEqualityOperand:
  template: "An equality expression can't be an operand of another equality expression."
  tip: "Try re-writing the expression."
  analyzerCode: EQUALITY_CANNOT_BE_EQUALITY_OPERAND
  dart2jsCode: "*fatal*"
  script:
    - "main() { var b = a < b < c; }"
    - "main() { var b = a == b != c; }"

ExpectedOpenParens:
  template: "Expected '('."
  dart2jsCode: GENERIC

ExpectedString:
  template: "Expected a String, but got '#lexeme'."
  analyzerCode: EXPECTED_STRING_LITERAL
  dart2jsCode: "*fatal*"

ExpectedToken:
  template: "Expected to find '#string'."
  analyzerCode: EXPECTED_TOKEN
  dart2jsCode: "*fatal*"

ExpectedType:
  template: "Expected a type, but got '#lexeme'."
  severity: ERROR
  analyzerCode: EXPECTED_TYPE_NAME
  dart2jsCode: "*fatal*"

MissingExpressionInThrow:
  template: "Missing expression after 'throw'."
  tip: "Add an expression after 'throw' or use 'rethrow' to throw a caught exception"
  analyzerCode: MISSING_EXPRESSION_IN_THROW
  dart2jsCode: "*fatal*"
  statement:
    - "throw;"

MissingConstFinalVarOrType:
  template: "Variables must be declared using the keywords 'const', 'final', 'var' or a type name."
  tip: "Try adding the name of the type of the variable or the keyword 'var'."
  analyzerCode: MISSING_CONST_FINAL_VAR_OR_TYPE
  dart2jsCode: "*fatal*"
  script:
    - "class C { static f; }"

FunctionTypedParameterVar:
  template: "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type."
  tip: "Try replacing the keyword with a return type."
  analyzerCode: FUNCTION_TYPED_PARAMETER_VAR
  dart2jsCode: "*fatal*"
  script:
    - "void f(const x()) {}"
    - "void f(final x()) {}"
    - "void f(var x()) {}"

AbstractClassMember:
  template: "Members of classes can't be declared to be 'abstract'."
  tip: "Try removing the 'abstract' keyword. You can add the 'abstract' keyword before the class declaration."
  analyzerCode: ABSTRACT_CLASS_MEMBER
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "abstract class C {abstract C.c();}"
    - "abstract class C {abstract m();}"
    - "abstract class C {abstract get m;}"
    - "abstract class C {abstract set m(int x);}"
    - "abstract class C {abstract f;}"
    - "abstract class C {abstract static f;}"

ClassInClass:
  template: "Classes can't be declared inside other classes."
  tip: "Try moving the class to the top-level."
  analyzerCode: CLASS_IN_CLASS
  dart2jsCode: "*fatal*"
  script:
    - "class C { class B {} }"

EnumInClass:
  template: "Enums can't be declared inside classes."
  tip: "Try moving the enum to the top-level."
  analyzerCode: ENUM_IN_CLASS
  dart2jsCode: "*fatal*"
  script:
    - "class Foo { enum Bar { Bar1, Bar2, Bar3 } }"

TypedefInClass:
  template: "Typedefs can't be declared inside classes."
  tip: "Try moving the typedef to the top-level."
  analyzerCode: TYPEDEF_IN_CLASS
  dart2jsCode: "*fatal*"
  script:
    - "abstract class C { typedef int F(int x); }"

CovariantMember:
  template: "Getters, setters and methods can't be declared to be 'covariant'."
  tip: "Try removing the 'covariant' keyword."
  analyzerCode: COVARIANT_MEMBER
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "static covariant get x => 0;"
    - "covariant int m() => 0;"

VarReturnType:
  template: "The return type can't be 'var'."
  tip: "Try removing the keyword 'var', or replacing it with the name of the return type."
  analyzerCode: VAR_RETURN_TYPE
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { var m() {} }"
    - "class C { var C() {} }"

ConstClass:
  template: "Classes can't be declared to be 'const'."
  tip: "Try removing the 'const' keyword. If you're trying to indicate that instances of the class can be constants, place the 'const' keyword on  the class' constructor(s)."
  analyzerCode: CONST_CLASS
  dart2jsCode: EXTRANEOUS_MODIFIER
  script: "const class C {}"

ConstAndCovariant:
  template: "Members can't be declared to be both 'const' and 'covariant'."
  tip: "Try removing either the 'const' or 'covariant' keyword."
  analyzerCode: CONST_AND_COVARIANT
  dart2jsCode: "*ignored*"
  script:
    - "class C { covariant const C f; }"
    - "class C { const covariant C f; }"

ConstAndFinal:
  template: "Members can't be declared to be both 'const' and 'final'."
  tip: "Try removing either the 'const' or 'final' keyword."
  analyzerCode: CONST_AND_FINAL
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { const final int x; }"
    - "class C { final const int x; }"

ConstAndVar:
  template: "Members can't be declared to be both 'const' and 'var'."
  tip: "Try removing either the 'const' or 'var' keyword."
  analyzerCode: CONST_AND_VAR
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { const var x; }"
    - "class C { var const x; }"

ConstFactory:
  template: "Only redirecting factory constructors can be declared to be 'const'."
  tip: "Try removing the 'const' keyword, or replacing the body with '=' followed by a valid target."
  analyzerCode: CONST_FACTORY
  dart2jsCode: "*ignored*"
  script:
    - "class C { const factory C() {} }"

ConstAfterFactory:
  template: "The modifier 'const' should be before the modifier 'factory'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: CONST_AFTER_FACTORY
  dart2jsCode: "*ignored*"
  script:
    - "class C { factory const C() = prefix.B.foo; }"

ConstConstructorWithBody:
  template: "A const constructor can't have a body."
  tip: "Try removing either the 'const' keyword or the body."
  analyzerCode: CONST_CONSTRUCTOR_WITH_BODY
  dart2jsCode: "*fatal*"
  script:
    - "class C { const C() {} }"

ConstMethod:
  template: "Getters, setters and methods can't be declared to be 'const'."
  tip: "Try removing the 'const' keyword."
  analyzerCode: CONST_METHOD
  dart2jsCode: "*fatal*"
  script:
    - "class C { const m() {} }"

CovariantAfterFinal:
  template: "The modifier 'covariant' should be before the modifier 'final'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: COVARIANT_AFTER_FINAL
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "final covariant f;"

CovariantAfterVar:
  template: "The modifier 'covariant' should be before the modifier 'var'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: COVARIANT_AFTER_VAR
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "var covariant f;"

CovariantAndStatic:
  template: "Members can't be declared to be both 'covariant' and 'static'."
  tip: "Try removing either the 'covariant' or 'static' keyword."
  analyzerCode: COVARIANT_AND_STATIC
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { covariant static A f; }"
    - "class C { static covariant A f; }"

DuplicatedModifier:
  template: "The modifier '#lexeme' was already specified."
  tip: "Try removing all but one occurance of the modifier."
  analyzerCode: DUPLICATED_MODIFIER
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { const const m; }"
    - "class C { external external f(); }"
    - "class C { final final m; }"
    - "class C { static static var m; }"
    - "class C { var var m; }"

ExternalAfterConst:
  template: "The modifier 'external' should be before the modifier 'const'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: EXTERNAL_AFTER_CONST
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { const external C(); }"

ExternalAfterFactory:
  template: "The modifier 'external' should be before the modifier 'factory'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: EXTERNAL_AFTER_FACTORY
  dart2jsCode: "*ignored*"
  script:
    - "class C { factory external C(); }"

ExternalAfterStatic:
  template: "The modifier 'external' should be before the modifier 'static'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: EXTERNAL_AFTER_STATIC
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { static external f(); }"

ExternalConstructorWithBody:
  template: "External constructors can't have a body."
  tip: "Try removing the body of the constructor, or removing the keyword 'external'."
  analyzerCode: EXTERNAL_CONSTRUCTOR_WITH_BODY
  dart2jsCode: "*ignored*"
  script:
    - "class C { external C() {} }"

ExternalFactoryWithBody:
  template: "External factories can't have a body."
  tip: "Try removing the body of the factory, or removing the keyword 'external'."
  analyzerCode: EXTERNAL_CONSTRUCTOR_WITH_BODY
  dart2jsCode: "*ignored*"
  script:
    - "class C { external factory C() {} }"

ExternalField:
  template: "Fields can't be declared to be 'external'."
  tip: "Try removing the keyword 'external'."
  analyzerCode: EXTERNAL_FIELD
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { external var f; }"

ExtraneousModifier:
  template: "Can't have modifier '#lexeme' here."
  tip: "Try removing '#lexeme'."
  analyzerCode: EXTRANEOUS_MODIFIER
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "var String foo; main(){}"
    - "var set foo; main(){}"
    - "var final foo; main(){}"
    - "var var foo; main(){}"
    - "var const foo; main(){}"
    - "var abstract foo; main(){}"
    - "var static foo; main(){}"
    - "var external foo; main(){}"
    - "get var foo; main(){}"
    - "set var foo; main(){}"
    - "final var foo; main(){}"
    - "var var foo; main(){}"
    - "const var foo; main(){}"
    - "abstract var foo; main(){}"
    - "static var foo; main(){}"
    - "external var foo; main(){}"
    - "set foo; main(){}"
    - "abstract foo; main(){}"
    - "static foo; main(){}"
    - "external foo; main(){}"
    - "final class C {}"
    - "abstract enum foo {bar}"
    - "abstract void foo() {}"
    - "static void foo() {}"
    - "abstract typedef foo();"
    - "static typedef foo();"

FinalAndCovariant:
  template: "Members can't be declared to be both 'final' and 'covariant'."
  tip: "Try removing either the 'final' or 'covariant' keyword."
  analyzerCode: FINAL_AND_COVARIANT
  dart2jsCode: "*ignored*"
  script:
    - "class C { covariant final f; }"
    - "class C { final covariant f; }"

FinalAndVar:
  template: "Members can't be declared to be both 'final' and 'var'."
  tip: "Try removing the keyword 'var'."
  analyzerCode: FINAL_AND_VAR
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { final var x; }"
    - "class C { var final x; }"

StaticAfterConst:
  template: "The modifier 'static' should be before the modifier 'const'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: STATIC_AFTER_CONST
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { const static int f; }"

StaticAfterFinal:
  template: "The modifier 'static' should be before the modifier 'final'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: STATIC_AFTER_FINAL
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { final static int f; }"

StaticAfterVar:
  template: "The modifier 'static' should be before the modifier 'var'."
  tip: "Try re-ordering the modifiers."
  analyzerCode: STATIC_AFTER_VAR
  dart2jsCode: "*ignored*"
  script:
    - "class C { var static f; }"

StaticConstructor:
  template: "Constructors can't be static."
  tip: "Try removing the keyword 'static'."
  analyzerCode: STATIC_CONSTRUCTOR
  dart2jsCode: "*fatal*"
  script:
    - "class C { static C() {} }"
    - "class C { static C.m() {} }"

StaticOperator:
  template: "Operators can't be static."
  tip: "Try removing the keyword 'static'."
  analyzerCode: STATIC_OPERATOR
  dart2jsCode: EXTRANEOUS_MODIFIER
  script:
    - "class C { static operator +(int x) => x + 1; }"

BreakOutsideOfLoop:
  template: "A break statement can't be used outside of a loop or switch statement."
  tip: "Try removing the break statement."
  analyzerCode: BREAK_OUTSIDE_OF_LOOP
  dart2jsCode: "*ignored*"
  script:
    - "main() { break; }"

ContinueOutsideOfLoop:
  template: "A continue statement can't be used outside of a loop or switch statement."
  tip: "Try removing the continue statement."
  analyzerCode: CONTINUE_OUTSIDE_OF_LOOP
  dart2jsCode: "*ignored*"
  script:
    - "main() { continue; }"

ContinueWithoutLabelInCase:
  template: "A continue statement in a switch statement must have a label as a target."
  tip: "Try adding a label associated with one of the case clauses to the continue statement."
  analyzerCode: CONTINUE_WITHOUT_LABEL_IN_CASE
  dart2jsCode: "*ignored*"
  script:
    - "main() { switch (x) {case 1: continue;} }"

DuplicateLabelInSwitchStatement:
  template: "The label '#name' was already used in this switch statement."
  tip: "Try choosing a different name for this label."
  analyzerCode: DUPLICATE_LABEL_IN_SWITCH_STATEMENT
  dart2jsCode: "*fatal*"
  statement:
    - "switch (0) {l1: case 0: break; l1: case 1: break;}"

LabelNotFound:
  template: "Can't find label '#name'."
  tip: "Try defining the label, or correcting the name to match an existing label."
  analyzerCode: LABEL_UNDEFINED
  dart2jsCode: "*fatal*"
  statement:
    - "switch (0) {case 0: continue L;}"

InitializedVariableInForEach:
  template: "The loop variable in a for-each loop can't be initialized."
  tip: "Try removing the initializer, or using a different kind of loop."
  analyzerCode: INITIALIZED_VARIABLE_IN_FOR_EACH
  dart2jsCode: "*fatal*"
  statement:
    - "for (int a = 0 in <int>[10]) {}"

InvalidAwaitFor:
  template: "The keyword 'await' isn't allowed for a normal 'for' statement."
  tip: "Try removing the keyword, or use a for-each statement."
  analyzerCode: INVALID_AWAIT_IN_FOR
  dart2jsCode: INVALID_AWAIT_FOR
  script:
    - "f() async {await for (int i = 0; i < 5; i++) {}}"

InvalidSyncModifier:
  template: "Invalid modifier 'sync'."
  tip: "Try replacing 'sync' with 'sync*'."
  analyzerCode: MISSING_STAR_AFTER_SYNC
  dart2jsCode: INVALID_SYNC_MODIFIER
  script: "main() sync {}"

InvalidVoid:
  template: "Type 'void' can't be used here because it isn't a return type."
  tip: "Try removing 'void' keyword or replace it with 'var', 'final', or a type."
  dart2jsCode: VOID_NOT_ALLOWED
  script:
    - "void x; main() {}"
    - "foo(void x) {} main() { foo(null); }"

InvalidInitializer:
  template: "Not a valid initializer."
  tip: "To initialize a field, use the syntax 'name = value'."

MissingExponent:
  template: "Numbers in exponential notation should always contain an exponent (an integer number with an optional sign)."
  tip: "Make sure there is an exponent, and remove any whitespace before it."
  analyzerCode: MISSING_DIGIT
  dart2jsCode: EXPONENT_MISSING
  script: >
    main() {
      var i = 1e;
    }

PositionalParameterWithEquals:
  template: "Positional optional parameters can't use ':' to specify a default value."
  tip: "Try replacing ':' with '='."
  analyzerCode: WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER
  dart2jsCode: POSITIONAL_PARAMETER_WITH_EQUALS
  script: >
    main() {
      foo([a: 1]) => print(a);
      foo(2);
    }

RequiredParameterWithDefault:
  template: "Non-optional parameters can't have a default value."
  tip: "Try removing the default value or making the parameter optional."
  analyzerCode: NAMED_PARAMETER_OUTSIDE_GROUP
  dart2jsCode: REQUIRED_PARAMETER_WITH_DEFAULT
  script:
    - >
      main() {
        foo(a: 1) => print(a);
        foo(2);
      }
    - >
      main() {
        foo(a = 1) => print(a);
        foo(2);
      }

StackOverflow:
  template: "Stack overflow."
  analyzerCode: STACK_OVERFLOW
  dart2jsCode: GENERIC

InvalidCodePoint:
  template: "The escape sequence starting with '\\u' isn't a valid code point."
  analyzerCode: INVALID_CODE_POINT
  dart2jsCode: "*fatal*"
  expression:
    - "'\\u{110000}'"

InvalidHexEscape:
  template: "An escape sequence starting with '\\x' must be followed by 2 hexidecimal digits."
  analyzerCode: INVALID_HEX_ESCAPE
  dart2jsCode: "*fatal*"
  expression:
    - "'\\x0'"
    - "'\\x0y'"

InvalidUnicodeEscape:
  template: "An escape sequence starting with '\\u' must be followed by 4 hexidecimal digits or from 1 to 6 digits between '{' and '}'."
  analyzerCode: INVALID_UNICODE_ESCAPE
  dart2jsCode: "*fatal*"
  expression:
    - "'\\u'"
    - "'\\u0F'"
    - "'\\u{'"
    - "'\\u{03'"
    - "'\\u{0Z}'"

UnexpectedDollarInString:
  template: "A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({})."
  tip: "Try adding a backslash (\\) to escape the '$'."
  analyzerCode: UNEXPECTED_DOLLAR_IN_STRING
  dart2jsCode: MALFORMED_STRING_LITERAL
  script:
    - >
      main() {
        return '$';
      }
    - >
      main() {
        return "$";
      }
    - >
      main() {
        return '''$''';
      }
    - >
      main() {
        return """$""";
      }

UnexpectedToken:
  template: "Unexpected token '#lexeme'."
  analyzerCode: UNEXPECTED_TOKEN
  dart2jsCode: "*fatal*"
  script:
    - "import 'b.dart' d as b;"

UnmatchedToken:
  template: "Can't find '#string' to match '#lexeme'."
  dart2jsCode: UNMATCHED_TOKEN
  script:
    - "main("
    - "main(){"
    - "main(){[}"

UnsupportedPrefixPlus:
  template: "'+' is not a prefix operator."
  tip: "Try removing '+'."
  analyzerCode: MISSING_IDENTIFIER
  dart2jsCode: UNSUPPORTED_PREFIX_PLUS
  script: "main() => +2;  // No longer a valid way to write '2'"

UnterminatedComment:
  template: "Comment starting with '/*' must end with '*/'."
  analyzerCode: UNTERMINATED_MULTI_LINE_COMMENT
  dart2jsCode: UNTERMINATED_COMMENT
  script:
    main() {
    }
    /*

UnterminatedString:
  template: "String starting with #string must end with #string2."
  analyzerCode: UNTERMINATED_STRING_LITERAL
  dart2jsCode: UNTERMINATED_STRING
  script:
    - >
      main() {
        return '
      ;
      }
    - >
      main() {
        return \"
      ;
      }
    - >
      main() {
        return r'
      ;
      }
    - >
      main() {
        return r\"
      ;
      }
    - >
      main() => '''
    - >
      main() => \"\"\"
    - >
      main() => r'''
    - >
      main() => r\"\"\"

UnterminatedToken:
  # This is a fall-back message that shouldn't happen.
  template: "Incomplete token."
  dart2jsCode: UNTERMINATED_TOKEN

# Note: avoid using this template, it should only be used for debugging and
# prototyping, see [diagnostics.md](
# lib/src/fasta/diagnostics.md#avoid-composing-messages-programmatically).
Unspecified:
  template: "#string"
  dart2jsCode: GENERIC

AbstractNotSync:
  template: "Abstract methods can't use 'async', 'async*', or 'sync*'."
  analyzerCode: NON_SYNC_ABSTRACT_METHOD
  dart2jsCode: "*ignored*"

AsyncAsIdentifier:
  analyzerCode: ASYNC_KEYWORD_USED_AS_IDENTIFIER
  template: "'async' can't be used as an identifier in 'async', 'async*', or 'sync*' methods."
  dart2jsCode: GENERIC

AwaitAsIdentifier:
  template: "'await' can't be used as an identifier in 'async', 'async*', or 'sync*' methods."
  analyzerCode: ASYNC_KEYWORD_USED_AS_IDENTIFIER
  dart2jsCode: "*ignored*"

AwaitNotAsync:
  template: "'await' can only be used in 'async' or 'async*' methods."
  analyzerCode: AWAIT_IN_WRONG_CONTEXT
  dart2jsCode: "*ignored*"

BuiltInIdentifierAsType:
  template: "The built-in identifier '#lexeme' can't be used as a type."
  tip: "Try correcting the name to match an existing type."
  analyzerCode: BUILT_IN_IDENTIFIER_AS_TYPE
  dart2jsCode: EXTRANEOUS_MODIFIER

BuiltInIdentifierInDeclaration:
  template: "Can't use '#lexeme' as a name here."
  analyzerCode: BUILT_IN_IDENTIFIER_IN_DECLARATION
  dart2jsCode: GENERIC

AwaitForNotAsync:
  template: "The asynchronous for-in can only be used in functions marked with 'async' or 'async*'."
  tip: "Try marking the function body with either 'async' or 'async*', or removing the 'await' before the for loop."
  analyzerCode: ASYNC_FOR_IN_WRONG_CONTEXT
  dart2jsCode: "*ignored*"
  script: >
    main(o) sync* {
      await for (var e in o) {}
    }

ConstructorNotSync:
  template: "Constructor bodies can't use 'async', 'async*', or 'sync*'."
  analyzerCode: NON_SYNC_CONSTRUCTOR
  dart2jsCode: "*ignored*"

FactoryNotSync:
  template: "Factory bodies can't use 'async', 'async*', or 'sync*'."
  analyzerCode: NON_SYNC_FACTORY
  dart2jsCode: "*ignored*"

GeneratorReturnsValue:
  template: "'sync*' and 'async*' can't return a value."
  analyzerCode: RETURN_IN_GENERATOR
  dart2jsCode: "*ignored*"

InvalidInlineFunctionType:
  template: "Invalid inline function type."
  tip: "Try changing the inline function type (as in 'int f()') to a prefixed function type using the `Function` keyword (as in 'int Function() f')."
  dart2jsCode: INVALID_INLINE_FUNCTION_TYPE
  declaration: "typedef F = Function(int f(String x));"

SetterNotSync:
  template: "Setters can't use 'async', 'async*', or 'sync*'."
  analyzerCode: INVALID_MODIFIER_ON_SETTER
  dart2jsCode: "*ignored*"

YieldAsIdentifier:
  template: "'yield' can't be used as an identifier in 'async', 'async*', or 'sync*' methods."
  analyzerCode: ASYNC_KEYWORD_USED_AS_IDENTIFIER
  dart2jsCode: "*fatal*"

YieldNotGenerator:
  template: "'yield' can only be used in 'sync*' or 'async*' methods."
  analyzerCode: YIELD_IN_NON_GENERATOR
  dart2jsCode: "*ignored*"

OnlyTry:
  template: "Try block should be followed by 'on', 'catch', or 'finally' block."
  tip: "Did you forget to add a 'finally' block?"
  analyzerCode: MISSING_CATCH_OR_FINALLY
  dart2jsCode: "*ignored*"
  statement: "try {}"

TypeAfterVar:
  template: "Can't have both a type and 'var'."
  tip: "Try removing 'var.'"
  analyzerCode: VAR_AND_TYPE
  dart2jsCode: EXTRANEOUS_MODIFIER

AssertExtraneousArgument:
  template: "`assert` can't have more than two arguments."
  dart2jsCode: "*fatal*"

PositionalAfterNamedArgument:
  template: "Place positional arguments before named arguments."
  tip: "Try moving the positional argument before the named arguments, or add a name to the argument."
  analyzerCode: POSITIONAL_AFTER_NAMED_ARGUMENT
  dart2jsCode: "*ignored*"

AssertAsExpression:
  template: "`assert` can't be used as an expression."
  dart2jsCode: "*fatal*"

FunctionTypeDefaultValue:
  template: "Can't have a default value in a function type."
  analyzerCode: DEFAULT_VALUE_IN_FUNCTION_TYPE
  dart2jsCode: "*ignored*"

PrivateNamedParameter:
  template: "An optional named parameter can't start with '_'."
  analyzerCode: PRIVATE_OPTIONAL_PARAMETER
  dart2jsCode: "*ignored*"

NoFormals:
  template: "A function should have formal parameters."
  tip: "Try adding '()' after '#lexeme', or add 'get' before '#lexeme' to declare a getter."
  analyzerCode: MISSING_FUNCTION_PARAMETERS
  dart2jsCode: "*ignored*"

GetterWithFormals:
  template: "A getter can't have formal parameters."
  tip: "Try removing '(...)'."
  analyzerCode: GETTER_WITH_PARAMETERS
  dart2jsCode: "*ignored*"

SetterWithWrongNumberOfFormals:
  template: "A setter should have exactly one formal parameter."
  analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
  dart2jsCode: "*ignored*"

CatchSyntax:
  template: "'catch' must be followed by '(identifier)' or '(identifier, identifier)'."
  tip: "No types are needed, the first is given by 'on', the second is always 'StackTrace'."
  analyzerCode: CATCH_SYNTAX
  dart2jsCode: "*ignored*"
  statement:
    - "try {} catch {}"
    - "try {} catch () {}"
    - "try {} catch (e,) {}"

SuperNullAware:
  template: "'super' can't be null."
  tip: "Try replacing '?.' with '.'"
  analyzerCode: INVALID_OPERATOR_FOR_SUPER
  dart2jsCode: "*ignored*"

ConstFieldWithoutInitializer:
  template: "The const variable '#name' must be initialized."
  tip: "Try adding an initializer ('= <expression>') to the declaration."
  analyzerCode: CONST_NOT_INITIALIZED
  dart2jsCode: "*ignored*"

FinalFieldWithoutInitializer:
  template: "The final variable '#name' must be initialized."
  tip: "Try adding an initializer ('= <expression>') to the declaration."
  analyzerCode: FINAL_NOT_INITIALIZED
  dart2jsCode: "*ignored*"

MetadataTypeArguments:
  template: "An annotation (metadata) can't use type arguments."
  dart2jsCode: "*ignored*"

ConstructorNotFound:
  template: "Couldn't find constructor '#name'."
  severity: ERROR_LEGACY_WARNING

ConstructorWithReturnType:
  template: "Constructors can't have a return type."
  tip: "Try removing the return type."
  analyzerCode: CONSTRUCTOR_WITH_RETURN_TYPE
  dart2jsCode: "*fatal*"
  script:
    - "class C { int C() {} }"

ConstructorWithTypeParameters:
  template: "Constructors can't have type parameters."
  severity: ERROR
  analyzerCode: TYPE_PARAMETER_ON_CONSTRUCTOR
  dart2jsCode: "*fatal*"
  script:
    - "class C { C<T>() {} }"
    - "class C { C.foo<T>() {} }"
    - "class C { factory C<T>() => null; }"
    - "class C { factory C.foo<T>() => null; }"

ConstructorWithWrongName:
  template: "The name of a constructor must match the name of the enclosing class."
  severity: ERROR
  analyzerCode: INVALID_CONSTRUCTOR_NAME
  dart2jsCode: "*fatal*"
  script:
    - "class A { B.foo() {} }"
    - "class A { factory B() => null; }"
    - "class A { factory B.foo() => null; }"

ConstructorWithWrongNameContext:
  template: "The name of the enclosing class is '#name'."
  severity: CONTEXT

ConstructorCyclic:
  template: "Redirecting constructers can't be cyclic."
  tip: "Try to have all constructors eventually redirect to a non-redirecting constructor."
  severity: ERROR
  analyzerCode: RECURSIVE_CONSTRUCTOR_REDIRECT
  dart2jsCode: "*fatal*"
  script:
    - "class C { C.foo() : this.bar(); C.bar() : this.foo(); }"

FieldInitializerOutsideConstructor:
  template: "Field formal parameters can only be used in a constructor."
  tip: "Try removing 'this.'."
  analyzerCode: FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR
  dart2jsCode: "*fatal*"
  script:
    - "class C { void m(this.x); }"

RedirectionTargetNotFound:
  template: "Redirection constructor target not found: '#name'"
  severity: ERROR_LEGACY_WARNING

CyclicTypedef:
  template: "The typedef '#name' has a reference to itself."
  analyzerCode: TYPE_ALIAS_CANNOT_REFERENCE_ITSELF
  dart2jsCode: "*fatal*"

TypeNotFound:
  template: "Type '#name' not found."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: UNDEFINED_CLASS
  dart2jsCode: "*fatal*"

NonInstanceTypeVariableUse:
  template: "Can only use type variables in instance methods."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: TYPE_PARAMETER_REFERENCED_BY_STATIC
  dart2jsCode: "*fatal*"

GetterNotFound:
  template: "Getter not found: '#name'."
  analyzerCode: UNDEFINED_GETTER
  severity: ERROR_LEGACY_WARNING

SetterNotFound:
  template: "Setter not found: '#name'."
  analyzerCode: UNDEFINED_SETTER
  severity: ERROR_LEGACY_WARNING

MethodNotFound:
  template: "Method not found: '#name'."
  analyzerCode: UNDEFINED_METHOD
  severity: ERROR_LEGACY_WARNING

CandidateFound:
  template: "Found this candidate, but the arguments don't match."
  severity: CONTEXT

CandidateFoundIsDefaultConstructor:
  template: "The class '#name' has a constructor that takes no arguments."
  severity: CONTEXT

TooFewArguments:
  template: "Too few positional arguments: #count required, #count2 given."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: NOT_ENOUGH_REQUIRED_ARGUMENTS
  dart2jsCode: "*fatal*"

TooManyArguments:
  template: "Too many positional arguments: #count allowed, #count2 given."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: EXTRA_POSITIONAL_ARGUMENTS
  dart2jsCode: "*fatal*"

NoSuchNamedParameter:
  template: "No named parameter with the name '#name'."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: UNDEFINED_NAMED_PARAMETER
  dart2jsCode: "*fatal*"

AbstractClassInstantiation:
  template: "The class '#name' is abstract and can't be instantiated."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: NEW_WITH_ABSTRACT_CLASS
  dart2jsCode: "*fatal*"

AbstractRedirectedClassInstantiation:
  template: "Factory redirects to class '#name', which is abstract and can't be instantiated."
  severity: ERROR_LEGACY_WARNING

MissingImplementationNotAbstract:
  template: |
    The non-abstract class '#name' is missing implementations for these members:
      #string.
  tip: |
    Try to either
     - provide an implementation,
     - inherit an implementation from a superclass or mixin,
     - mark the class as abstract, or
     - provide a 'noSuchMethod' implementation.
  severity: ERROR_LEGACY_WARNING
  analyzerCode: CONCRETE_CLASS_WITH_ABSTRACT_MEMBER
  dart2jsCode: "*fatal*"
  script:
    - "class C {foo();}"

MissingImplementationCause:
  template: "'#name' is defined here."
  severity: CONTEXT

ListLiteralTooManyTypeArguments:
  template: "List literal requires exactly one type argument."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: EXPECTED_ONE_LIST_TYPE_ARGUMENTS
  dart2jsCode: "*fatal*"

MapLiteralTypeArgumentMismatch:
  template: "Map literal requires exactly two type arguments."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: EXPECTED_TWO_MAP_TYPE_ARGUMENTS
  dart2jsCode: "*fatal*"

LoadLibraryTakesNoArguments:
  template: "'loadLibrary' takes no arguments."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: LOAD_LIBRARY_TAKES_NO_ARGUMENTS
  dart2jsCode: "*fatal*"

LoadLibraryHidesMember:
  template: "The library '#uri' defines a top-level member named 'loadLibrary'. This member is hidden by the special member 'loadLibrary' that the language adds to support deferred loading."
  tip: "Try to rename or hide the member."
  severity: IGNORED

TypeArgumentMismatch:
  template: "'#name' expects #count type arguments."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: WRONG_NUMBER_OF_TYPE_ARGUMENTS
  dart2jsCode: "*fatal*"

NotAType:
  template: "'#name' isn't a type."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: NOT_A_TYPE
  dart2jsCode: "*ignored*"

NotAPrefixInTypeAnnotation:
  template: "'#lexeme.#lexeme2' can't be used as a type because '#lexeme' doesn't refer to an import prefix."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: NOT_A_TYPE
  dart2jsCode: "*ignored*"

UnresolvedPrefixInTypeAnnotation:
  template: "'#lexeme.#lexeme2' can't be used as a type because '#lexeme' isn't defined."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: NOT_A_TYPE
  dart2jsCode: "*ignored*"

FastaUsageShort:
  template: |
    Frequently used options:

      -o <file> Generate the output into <file>.
      -h        Display this message (add -v for information about all options).

FastaUsageLong:
  # TODO(ahe): Consider if the reference to platform.dill needs to change below?
  template: |
    Supported options:

      -o <file>, --output=<file>
        Generate the output into <file>.

      -h, /h, /?, --help
        Display this message (add -v for information about all options).

      -v, --verbose
        Display verbose information.

      --
        Stop option parsing, the rest of the command line is assumed to be
        file names or arguments to the Dart program.

      --packages=<file>
        Use package resolution configuration <file>, which should contain a mapping
        of package names to paths.

      --platform=<file>
        Read the SDK platform from <file>, which should be in Dill/Kernel IR format
        and contain the Dart SDK.

      --target=dart2js|dart2js_server|dart_runner|flutter|flutter_runner|none|vm
        Specify the target configuration.

      --verify
        Check that the generated output is free of various problems. This is mostly
        useful for developers of this compiler or Kernel transformations.

      --dump-ir
        Print compiled libraries in Kernel source notation.

      --exclude-source
        Do not include source code in the dill file.

      --compile-sdk=<sdk>
        Compile the SDK from scratch instead of reading it from a .dill file
        (see --platform).

      --sdk=<sdk>
        Location of the SDK sources for use when compiling additional platform
        libraries.

      --fatal=errors
      --fatal=warnings
        Makes messages of the given kinds fatal, that is, immediately stop the
        compiler with a non-zero exit-code. In --verbose mode, also display an
        internal stack trace from the compiler. Multiple kinds can be separated by
        commas, for example, --fatal=errors,warnings.

FastaCLIArgumentRequired:
  template: "Expected value after '#name'."

NamedFunctionExpression:
  template: "A function expression can't have a name."
  analyzerCode: NAMED_FUNCTION_EXPRESSION
  dart2jsCode: "*ignored*"

NativeClauseShouldBeAnnotation:
  template: "Native clause in this form is deprecated."
  tip: "Try removing this native clause and adding @native() or @native('native-name') before the declaration."
  analyzerCode: NATIVE_CLAUSE_SHOULD_BE_ANNOTATION
  dart2jsCode: "*fatal*"

ReturnTypeFunctionExpression:
  template: "A function expression can't have a return type."
  severity: ERROR_LEGACY_WARNING
  dart2jsCode: "*ignored*"

InternalProblemUnhandled:
  template: "Unhandled #string in #string2."
  severity: INTERNAL_PROBLEM

InternalProblemUnimplemented:
  template: "Unimplemented #string."
  severity: INTERNAL_PROBLEM

InternalProblemUnexpected:
  template: "Expected '#string', but got '#string2'."
  severity: INTERNAL_PROBLEM

InternalProblemUnsupported:
  template: "Unsupported operation: '#name'."
  severity: INTERNAL_PROBLEM

InternalProblemSuperclassNotFound:
  template: "Superclass not found '#name'."
  severity: INTERNAL_PROBLEM

InternalProblemNotFound:
  template: "Couldn't find '#name'."
  severity: INTERNAL_PROBLEM

InternalProblemNotFoundIn:
  template: "Couldn't find '#name' in '#name2'."
  severity: INTERNAL_PROBLEM

InternalProblemPrivateConstructorAccess:
  template: "Can't access private constructor '#name'."
  severity: INTERNAL_PROBLEM

InternalProblemConstructorNotFound:
  template: "No constructor named '#name' in '#uri'."
  severity: INTERNAL_PROBLEM

InternalProblemExtendingUnmodifiableScope:
  template: "Can't extend an unmodifiable scope."
  severity: INTERNAL_PROBLEM

InternalProblemPreviousTokenNotFound:
  template: "Couldn't find previous token."
  severity: INTERNAL_PROBLEM

InternalProblemStackNotEmpty:
  template: "#name.stack isn't empty:\n  #string"
  severity: INTERNAL_PROBLEM

InternalProblemAlreadyInitialized:
  template: "Attempt to set initializer on field without initializer."
  severity: INTERNAL_PROBLEM

InternalProblemBodyOnAbstractMethod:
  template: "Attempting to set body on abstract method."
  severity: INTERNAL_PROBLEM

InternalProblemMissingContext:
  template: "Compiler cannot run without a compiler context."
  tip: "Are calls to the compiler wrapped in CompilerContext.runInContext?"
  severity: INTERNAL_PROBLEM

InternalProblemProvidedBothCompileSdkAndSdkSummary:
  template: "The compileSdk and sdkSummary options are mutually exclusive"
  severity: INTERNAL_PROBLEM

InternalProblemUriMissingScheme:
  template: "The URI '#uri' has no scheme."
  severity: INTERNAL_PROBLEM

InternalProblemMissingSeverity:
  template: "Message code missing severity: #string"
  severity: INTERNAL_PROBLEM

InternalProblemContextSeverity:
  template: "Non-context message has context severity: #string"
  severity: INTERNAL_PROBLEM

InternalProblemVerificationError:
  template: |
    Verification of the generated program failed:
    #string
  severity: INTERNAL_PROBLEM

InternalProblemDebugAbort:
  template: "Compilation aborted due to fatal '#name' at:\n#string"
  severity: INTERNAL_PROBLEM

LocalDefinitionHidesExport:
  template: "Local definition of '#name' hides export from '#uri'."
  severity: IGNORED

LocalDefinitionHidesImport:
  template: "Local definition of '#name' hides import from '#uri'."
  severity: IGNORED

ExportHidesExport:
  template: "Export of '#name' (from '#uri') hides export from '#uri2'."
  severity: IGNORED

ImportHidesImport:
  template: "Import of '#name' (from '#uri') hides import from '#uri2'."
  severity: IGNORED

MissingPrefixInDeferredImport:
  template: "Deferred imports should have a prefix."
  tip: "Try adding a prefix to the import."
  analyzerCode: MISSING_PREFIX_IN_DEFERRED_IMPORT
  dart2jsCode: "*fatal*"

DeferredAfterPrefix:
  template: "The deferred keyword should come immediately before the prefix ('as' clause)."
  tip: "Try moving the deferred keyword before the prefix."
  analyzerCode: DEFERRED_AFTER_PREFIX
  dart2jsCode: "*fatal*"

DuplicateDeferred:
  template: "An import directive can only have one 'deferred' keyword."
  tip: "Try removing all but one 'deferred' keyword."
  analyzerCode: DUPLICATE_DEFERRED
  dart2jsCode: "*fatal*"

DeferredTypeAnnotation:
  template: "The type '#type' is deferred loaded via prefix '#name' and can't be used as a type annotation."
  tip: "Try removing 'deferred' from the import of '#name' or use a supertype of '#type' that isn't deferred."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: TYPE_ANNOTATION_DEFERRED_CLASS
  dart2jsCode: "*fatal*"

DuplicatePrefix:
  template: "An import directive can only have one prefix ('as' clause)."
  tip: "Try removing all but one prefix."
  analyzerCode: DUPLICATE_PREFIX
  dart2jsCode: "*fatal*"

PrefixAfterCombinator:
  template: "The prefix ('as' clause) should come before any show/hide combinators."
  tip: "Try moving the prefix before the combinators."
  analyzerCode: PREFIX_AFTER_COMBINATOR
  dart2jsCode: "*fatal*"

DuplicatedExport:
  template: "'#name' is exported from both '#uri' and '#uri2'."
  severity: IGNORED
  analyzerCode: AMBIGUOUS_EXPORT
  dart2jsCode: "*ignored*"

DuplicatedExportInType:
  template: "'#name' is exported from both '#uri' and '#uri2'."
  severity: ERROR_LEGACY_WARNING

DuplicatedImport:
  template: "'#name' is imported from both '#uri' and '#uri2'."
  severity: IGNORED

DuplicatedImportInType:
  template: "'#name' is imported from both '#uri' and '#uri2'."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: AMBIGUOUS_IMPORT
  dart2jsCode: "*fatal*"
  script:
    lib1.dart: "class A {}"
    lib2.dart: "class A {}"
    main.dart: "import 'lib1.dart'; import 'lib2.dart'; A a;"

CyclicClassHierarchy:
  template: "'#name' is a supertype of itself via '#string'."

ExtendingEnum:
  template: "'#name' is an enum and can't be extended or implemented."

ExtendingRestricted:
  template: "'#name' is restricted and can't be extended or implemented."
  analyzerCode: EXTENDS_DISALLOWED_CLASS
  dart2jsCode: "*ignored*"

NoUnnamedConstructorInObject:
  template: "'Object' has no unnamed constructor."

IllegalMixinDueToConstructors:
  template: "Can't use '#name' as a mixin because it has constructors."
  analyzerCode: MIXIN_DECLARES_CONSTRUCTOR
  dart2jsCode: "*fatal*"

IllegalMixinDueToConstructorsCause:
  template: "This constructor prevents using '#name' as a mixin."
  severity: CONTEXT

ConflictsWithConstructor:
  template: "Conflicts with constructor '#name'."
  severity: ERROR
  analyzerCode: CONFLICTS_WITH_CONSTRUCTOR
  dart2jsCode: "*fatal*"

ConflictsWithFactory:
  template: "Conflicts with factory '#name'."
  severity: ERROR

ConflictsWithMember:
  template: "Conflicts with member '#name'."
  severity: ERROR
  analyzerCode: CONFLICTS_WITH_MEMBER
  dart2jsCode: "*fatal*"

ConflictsWithMemberWarning:
  template: "Conflicts with member '#name'."
  severity: ERROR_LEGACY_WARNING

ConflictsWithSetter:
  template: "Conflicts with setter '#name'."
  severity: ERROR

ConflictsWithSetterWarning:
  template: "Conflicts with setter '#name'."
  severity: ERROR_LEGACY_WARNING

ConflictsWithTypeVariable:
  template: "Conflicts with type variable '#name'."
  severity: ERROR
  analyzerCode: CONFLICTING_TYPE_VARIABLE_AND_MEMBER
  dart2jsCode: "*fatal*"

ConflictsWithTypeVariableCause:
  template: "This is the type variable."
  severity: CONTEXT

DeclaredMemberConflictsWithInheritedMember:
  template: "Can't declare a member that conflicts with an inherited one."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: DECLARED_MEMBER_CONFLICTS_WITH_INHERITED
  dart2jsCode: "*fatal*"
  script:
    - >-
      class A {
        var foo;
      }
      class B extends A {
        foo() {}
      }
    - >-
      abstract class A {
        get foo;
      }
      class B implements A {
        foo() {}
      }
    - >-
      class A {
        foo() {}
      }
      class B extends A {
        var foo;
      }
    - >-
      abstract class A {
        foo();
      }
      class B implements A {
        var foo;
      }

DeclaredMemberConflictsWithInheritedMemberCause:
  template: "This is the inherited member."
  severity: CONTEXT

InheritedMembersConflict:
  template: "Can't inherit members that conflict with each other."
  severity: ERROR_LEGACY_WARNING
  script:
    - >-
      class A {
        foo() {}
      }
      abstract class B {
        get foo;
      }
      class C extends A implements B {}
    - >-
      class A {
        var foo;
      }
      abstract class B {
        foo();
      }
      class C extends A implements B {}
    - >-
      class A {
        get foo => 0;
      }
      abstract class B {
        foo();
      }
      class C extends A implements B {}

InheritedMembersConflictCause1:
  template: "This is one inherited member."
  severity: CONTEXT

InheritedMembersConflictCause2:
  template: "This is the other inherited member."
  severity: CONTEXT

IllegalMixin:
  template: "The type '#name' can't be mixed in."

OverrideTypeVariablesMismatch:
  template: "Declared type variables of '#name' doesn't match those on overridden method '#name2'."
  severity: ERROR_LEGACY_WARNING

OverriddenMethodCause:
  template: "This is the overriden method ('#name')."
  severity: CONTEXT

OverrideMismatchNamedParameter:
  template: "The method '#name' doesn't have the named parameter '#name2' of overriden method '#name3'."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: INVALID_OVERRIDE_NAMED
  dart2jsCode: "*fatal*"

OverrideFewerNamedArguments:
  template: "The method '#name' has fewer named arguments than those of overridden method '#name2'."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: INVALID_OVERRIDE_NAMED
  dart2jsCode: "*fatal*"

OverrideFewerPositionalArguments:
  template: "The method '#name' has fewer positional arguments than those of overridden method '#name2'."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: INVALID_OVERRIDE_POSITIONAL
  dart2jsCode: "*fatal*"

OverrideMoreRequiredArguments:
  template: "The method '#name' has more required arguments than those of overridden method '#name2'."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: INVALID_OVERRIDE_REQUIRED
  dart2jsCode: "*fatal*"

OverrideTypeMismatchParameter:
  template: "The parameter '#name' of the method '#name2' has type #type, which does not match the corresponding type in the overridden method (#type2)."
  tip: "Change to a supertype of #type2 (or, for a covariant parameter, a subtype)."
  analyzerCode: INVALID_METHOD_OVERRIDE
  dart2jsCode: "*ignored*"

OverrideTypeMismatchReturnType:
  template: "The return type of the method '#name' is #type, which does not match the return type of the overridden method (#type2)."
  tip: "Change to a subtype of #type2."
  analyzerCode: INVALID_METHOD_OVERRIDE
  dart2jsCode: "*ignored*"

PartOfSelf:
  template: "A file can't be a part of itself."
  analyzerCode: PART_OF_NON_PART
  script:
    main.dart: "part 'main.dart';"

TypeVariableDuplicatedName:
  template: "A type variable can't have the same name as another."
  analyzerCode: DUPLICATE_DEFINITION
  dart2jsCode: "*fatal*"

TypeVariableDuplicatedNameCause:
  template: "The other type variable named '#name'."
  severity: CONTEXT

TypeVariableSameNameAsEnclosing:
  template: "A type variable can't have the same name as its enclosing declaration."
  analyzerCode: CONFLICTING_TYPE_VARIABLE_AND_CLASS
  dart2jsCode: "*fatal*"

ExpectedEnumBody:
  template: "Expected a enum body, but got '#lexeme'."
  tip: "An enum definition must have a body with at least one constant name."
  analyzerCode: MISSING_ENUM_BODY
  dart2jsCode: "*fatal*"
  script:
    - "enum E"

EnumDeclarationEmpty:
  template: "An enum declaration can't be empty."
  analyzerCode: EMPTY_ENUM_BODY
  dart2jsCode: "*ignored*"
  script:
    - "enum E {}"

ExternalClass:
  template: "Classes can't be declared to be 'external'."
  tip: "Try removing the keyword 'external'."
  analyzerCode: EXTERNAL_CLASS
  dart2jsCode: "*ignored*"
  script:
    - "external class C {}"

ExternalEnum:
  template: "Enums can't be declared to be 'external'."
  tip: "Try removing the keyword 'external'."
  analyzerCode: EXTERNAL_ENUM
  dart2jsCode: "*ignored*"
  script:
    - "external enum E {ONE}"

ExternalMethodWithBody:
  # TODO(danrubel): remove reference to `native` once support has been removed
  template: "An external or native method can't have a body."
  analyzerCode: EXTERNAL_METHOD_WITH_BODY
  dart2jsCode: "*ignored*"
  script:
    - "class C {external foo() {}}"
    - "class C {foo() native {}}"
    - "class C {foo() native 'bar' {}}"

ExternalTypedef:
  template: "Typedefs can't be declared to be 'external'."
  tip: "Try removing the keyword 'external'."
  analyzerCode: EXTERNAL_TYPEDEF
  dart2jsCode: "*ignored*"
  script:
    - "external typedef F();"

OperatorWithOptionalFormals:
  template: "An operator can't have optional parameters."

PlatformPrivateLibraryAccess:
  template: "Can't access platform private library."

TypedefNotFunction:
  template: "Can't create typedef from non-function type."
  analyzerCode: INVALID_GENERIC_FUNCTION_TYPE
  dart2jsCode: "*fatal*"

LibraryDirectiveNotFirst:
  template: "The library directive must appear before all other directives."
  tip: "Try moving the library directive before any other directives."
  analyzerCode: LIBRARY_DIRECTIVE_NOT_FIRST
  dart2jsCode: "*ignored*"
  script:
    - "class Foo{} library l;"
    - "import 'x.dart'; library l;"
    - "part 'a.dart'; library l;"

ImportAfterPart:
  template: "Import directives must preceed part directives."
  tip: "Try moving the import directives before the part directives."
  analyzerCode: IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE
  dart2jsCode: "*ignored*"
  script:
    - "part 'foo.dart'; import 'bar.dart';"

ExportAfterPart:
  template: "Export directives must preceed part directives."
  tip: "Try moving the export directives before the part directives."
  analyzerCode: EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE
  dart2jsCode: "*ignored*"
  script:
    - "part 'foo.dart'; export 'bar.dart';"

DirectiveAfterDeclaration:
  template: "Directives must appear before any declarations."
  tip: "Try moving the directive before any declarations."
  analyzerCode: DIRECTIVE_AFTER_DECLARATION
  dart2jsCode: "*ignored*"
  script:
    - "class foo { } import 'bar.dart';"
    - "class foo { } export 'bar.dart';"

NonPartOfDirectiveInPart:
  template: "The part-of directive must be the only directive in a part."
  tip: "Try removing the other directives, or moving them to the library for which this is a part."
  analyzerCode: NON_PART_OF_DIRECTIVE_IN_PART
  dart2jsCode: "*ignored*"
  script:
    - "part of l; part 'f.dart';"

PartOfTwice:
  template: "Only one part-of directive may be declared in a file."
  tip: "Try removing all but one of the part-of directives."
  analyzerCode: MULTIPLE_PART_OF_DIRECTIVES
  dart2jsCode: "*ignored*"
  script:
    - "part of l; part of m;"

PartTwice:
  template: "Can't use '#uri' as a part more than once."
  analyzerCode: DUPLICATE_PART
  script:
    part.dart: "part of 'main.dart';"
    main.dart: "part 'part.dart'; part 'part.dart';"

PartOfTwoLibraries:
  template: "A file can't be part of more than one library."
  tip: "Try moving the shared declarations into the libraries, or into a new library."
  severity: ERROR
  script:
    main.dart: "library lib; import 'lib.dart'; part 'part.dart';"
    lib.dart: "library lib; part 'part.dart';"
    part.dart: "part of lib;"

PartOfTwoLibrariesContext:
  template: "Used as a part in this library."
  severity: CONTEXT

FactoryTopLevelDeclaration:
  template: "Top-level declarations can't be declared to be 'factory'."
  tip: "Try removing the keyword 'factory'."
  analyzerCode: FACTORY_TOP_LEVEL_DECLARATION
  dart2jsCode: "*fatal*"
  script:
    - "factory class C {}"

RedirectionInNonFactory:
  template: "Only factory constructor can specify '=' redirection."
  tip: "Try making this a factory constructor, or remove the redirection."
  analyzerCode: REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR
  dart2jsCode: "*fatal*"
  script:
    - "class C { C() = D; }"

TopLevelOperator:
  template: "Operators must be declared within a class."
  tip: "Try removing the operator, moving it to a class, or converting it to be a function."
  analyzerCode: TOP_LEVEL_OPERATOR
  dart2jsCode: "*fatal*"
  script:
    - "operator +(bool x, bool y) => x | y;"
    - "bool operator +(bool x, bool y) => x | y;"
    - "void operator +(bool x, bool y) => x | y;"

MissingFunctionParameters:
  template: "A function declaration needs an explicit list of parameters."
  tip: "Try adding a parameter list to the function declaration."
  analyzerCode: MISSING_FUNCTION_PARAMETERS
  dart2jsCode: "*fatal*"
  script:
    - "void f {}"

MissingMethodParameters:
  template: "A method declaration needs an explicit list of parameters."
  tip: "Try adding a parameter list to the method declaration."
  analyzerCode: MISSING_METHOD_PARAMETERS
  dart2jsCode: "*fatal*"
  script:
    - "class C { void m {} }"

MissingTypedefParameters:
  template: "A typedef needs an explicit list of parameters."
  tip: "Try adding a parameter list to the typedef."
  analyzerCode: MISSING_TYPEDEF_PARAMETERS
  dart2jsCode: "*fatal*"
  script:
    - "typedef void F;"

MissingPartOf:
  template: "Can't use '#uri' as a part, because it has no 'part of' declaration."
  analyzerCode: PART_OF_NON_PART
  script:
    part.dart: ""
    main.dart: "part 'part.dart';"

SupertypeIsFunction:
  template: "Can't use a function type as supertype."

DeferredPrefixDuplicated:
  template: "Can't use the name '#name' for a deferred library, as the name is used elsewhere."
  analyzerCode: SHARED_DEFERRED_PREFIX
  dart2jsCode: "*fatal*"

DeferredPrefixDuplicatedCause:
  template: "'#name' is used here."
  severity: CONTEXT

TypeArgumentsOnTypeVariable:
  template: "Can't use type arguments with type variable '#name'."
  tip: "Try removing the type arguments."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: TYPE_ARGUMENTS_ON_TYPE_VARIABLE
  dart2jsCode: "*fatal*"
  script:
    - "dynamic<T>(x) => 0"

DuplicatedDefinition:
  template: "Duplicated definition of '#name'."

DuplicatedName:
  template: "'#name' is already declared in this scope."
  severity: ERROR
  analyzerCode: DUPLICATE_DEFINITION
  dart2jsCode: "*fatal*"

DuplicatedNameCause:
  template: "Previous declaration of '#name'."
  severity: CONTEXT

DuplicatedNamePreviouslyUsed:
  template: "Can't declare '#name' because it was already used in this scope."
  severity: ERROR
  analyzerCode: REFERENCED_BEFORE_DECLARATION
  dart2jsCode: "*ignored*"
  script:
    - "main(arguments) { arguments; var arguments; }"

DuplicatedNamePreviouslyUsedCause:
  template: "Previous use of '#name'."
  analyzerCode: REFERENCED_BEFORE_DECLARATION
  severity: CONTEXT

DuplicatedParameterName:
  template: "Duplicated parameter name '#name'."
  severity: ERROR
  analyzerCode: DUPLICATE_DEFINITION
  dart2jsCode: "*fatal*"

DuplicatedParameterNameCause:
  template: "Other parameter named '#name'."
  severity: CONTEXT

MemberWithSameNameAsClass:
  template: "A class member can't have the same name as the enclosing class."

EnumConstantSameNameAsEnclosing:
  template: "Name of enum constant '#name' can't be the same as the enum's own name."
  analyzerCode: ENUM_CONSTANT_WITH_ENUM_NAME
  dart2jsCode: "*fatal*"

MissingOperatorKeyword:
  template: "Operator declarations must be preceeded by the keyword 'operator'."
  tip: "Try adding the keyword 'operator'."
  analyzerCode: MISSING_KEYWORD_OPERATOR
  dart2jsCode: "*fatal*"
  script:
    - "class C { +(x) {} }"

InvalidOperator:
  template: "The string '#lexeme' isn't a user-definable operator."
  analyzerCode: INVALID_OPERATOR
  dart2jsCode: "*fatal*"
  script:
    - "class C { void operator ===(x) {} }"

OperatorParameterMismatch0:
  template: "Operator '#name' shouldn't have any parameters."

OperatorParameterMismatch1:
  template: "Operator '#name' should have exactly one parameter."
  analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  dart2jsCode: "*fatal*"

OperatorParameterMismatch2:
  template: "Operator '#name' should have exactly two parameters."
  analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  dart2jsCode: "*fatal*"

OperatorMinusParameterMismatch:
  template: "Operator '#name' should have zero or one parameter."
  tip: >-
    With zero parameters, it has the syntactic form '-a', formally known as 'unary-'.
    With one parameter, it has the syntactic form 'a - b', formally known as '-'.
  analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS
  dart2jsCode: "*fatal*"

SupertypeIsIllegal:
  template: "The type '#name' can't be used as supertype."

SupertypeIsTypeVariable:
  template: "The type variable '#name' can't be used as supertype."

PartOfLibraryNameMismatch:
  template: "Using '#uri' as part of '#name' but its 'part of' declaration says '#name2'."
  analyzerCode: PART_OF_DIFFERENT_LIBRARY
  severity: ERROR_LEGACY_WARNING

PartOfUseUri:
  template: "Using '#uri' as part of '#uri2' but its 'part of' declaration says '#name'."
  tip: "Try changing the 'part of' declaration to use a relative file name."
  analyzerCode: PART_OF_UNNAMED_LIBRARY
  severity: ERROR_LEGACY_WARNING

PartOfUriMismatch:
  template: "Using '#uri' as part of '#uri2' but its 'part of' declaration says '#uri3'."
  analyzerCode: PART_OF_DIFFERENT_LIBRARY
  severity: ERROR_LEGACY_WARNING

MissingMain:
  template: "No 'main' method found."
  tip: "Try adding a method named 'main' to your program."
  dart2jsCode: MISSING_MAIN

MissingInput:
  template: "No input file provided to the compiler."

InputFileNotFound:
  template: "Input file not found: #uri."

SdkRootNotFound:
  template: "SDK root directory not found: #uri."

SdkSummaryNotFound:
  template: "SDK summary not found: #uri."

SdkSpecificationNotFound:
  template: "SDK libraries specification not found: #uri."
  tip: "Normally, the specification is a file named 'libraries.json' in the Dart SDK install location."

ThisAccessInFieldInitializer:
  template: "Can't access 'this' in a field initializer to read '#name'."
  analyzerCode: THIS_ACCESS_FROM_INITIALIZER
  dart2jsCode: "*fatal*"

ThisAsIdentifier:
  template: "Expected identifier, but got 'this'."

SuperAsIdentifier:
  template: "Expected identifier, but got 'super'."

SuperAsExpression:
  template: "Can't use 'super' as an expression."
  tip: "To delegate a constructor to a super constructor, put the super call as an initializer."
  analyzerCode: SUPER_AS_EXPRESSION
  dart2jsCode: "*fatal*"

SwitchHasCaseAfterDefault:
  template: "The default case should be the last case in a switch statement."
  tip: "Try moving the default case after the other case clauses."
  analyzerCode: SWITCH_HAS_CASE_AFTER_DEFAULT_CASE
  dart2jsCode: "*fatal*"
  script:
    - "class C { foo(int a) {switch (a) {default: return 0; case 1: return 1;}} }"

SwitchHasMultipleDefaults:
  template: "The 'default' case can only be declared once."
  tip: "Try removing all but one default case."
  analyzerCode: SWITCH_HAS_MULTIPLE_DEFAULT_CASES
  dart2jsCode: "*fatal*"
  script:
    - "class C { foo(int a) {switch (a) {default: return 0; default: return 1;}} }"

SwitchCaseFallThrough:
  template: "Switch case may fall through to the next case."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: CASE_BLOCK_NOT_TERMINATED
  dart2jsCode: "*fatal*"

FinalInstanceVariableAlreadyInitialized:
  template: "'#name' is a final instance variable that has already been initialized."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: FINAL_INITIALIZED_MULTIPLE_TIMES
  dart2jsCode: "*fatal*"

FinalInstanceVariableAlreadyInitializedCause:
  template: "'#name' was initialized here."
  severity: CONTEXT

TypeVariableInStaticContext:
  template: "Type variables can't be used in static members."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: TYPE_PARAMETER_REFERENCED_BY_STATIC
  dart2jsCode: "*fatal*"

SuperclassMethodArgumentMismatch:
  template: "Superclass doesn't have a method named '#name' with matching arguments."
  severity: ERROR_LEGACY_WARNING

SuperclassHasNoGetter:
  template: "Superclass has no getter named '#name'."
  analyzerCode: UNDEFINED_SUPER_GETTER
  severity: ERROR_LEGACY_WARNING

SuperclassHasNoSetter:
  template: "Superclass has no setter named '#name'."
  analyzerCode: UNDEFINED_SUPER_SETTER
  severity: ERROR_LEGACY_WARNING

SuperclassHasNoMethod:
  template: "Superclass has no method named '#name'."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: UNDEFINED_SUPER_METHOD
  dart2jsCode: "*ignored*"

SuperclassHasNoDefaultConstructor:
  template: "The superclass, '#name', has no unnamed constructor that takes no arguments."
  analyzerCode: NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT
  dart2jsCode: "*ignored*"

ConstConstructorNonFinalField:
  template: "Constructor is marked 'const' so all fields must be final."
  analyzerCode: CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD
  dart2jsCode: "*fatal*"

ConstConstructorNonFinalFieldCause:
  template: "Field isn't final, but constructor is 'const'."
  severity: CONTEXT

AccessError:
  template: "Access error: '#name'."

ExpressionNotMetadata:
  template: "This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor."

ExpectedAnInitializer:
  template: "Expected an initializer."
  analyzerCode: MISSING_INITIALIZER
  dart2jsCode: "*fatal*"
  script:
    - "class C { C() : {} }"

MissingAssignmentInInitializer:
  template: "Expected an assignment after the field name."
  tip: "To initialize a field, use the syntax 'name = value'."
  analyzerCode: MISSING_ASSIGNMENT_IN_INITIALIZER
  dart2jsCode: "*fatal*"
  script:
    - "class C { C() : x(3) {} }"

RedirectingConstructorWithBody:
  template: "Redirecting constructors can't have a body."
  tip: "Try removing the body, or not making this a redirecting constructor."
  analyzerCode: REDIRECTING_CONSTRUCTOR_WITH_BODY
  dart2jsCode: "*fatal*"
  script:
    - "class C { C() : this.x() {} }"

NotAnLvalue:
  template: "Can't assign to this."

IllegalAssignmentToNonAssignable:
  template: "Illegal assignment to non-assignable expression."
  analyzerCode: ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE
  dart2jsCode: "*fatal*"
  script:
    - "main(){ f()++; }"

MissingAssignableSelector:
  template: "Missing selector such as '.<identifier>' or '[0]'."
  tip: "Try adding a selector."
  analyzerCode: MISSING_ASSIGNABLE_SELECTOR
  dart2jsCode: "*fatal*"
  script:
    - "main(){ ++f(); }"

CannotReadPackagesFile:
  template: "Unable to read '.packages' file:\n  #string."

CannotReadSdkSpecification:
  template: "Unable to read the 'libraries.json' specification file:\n  #string."

CantInferPackagesFromManyInputs:
  template: "Can't infer a .packages file when compiling multiple inputs."
  tip: "Try specifying the file explicitly with the --packages option."

CantInferPackagesFromPackageUri:
  template: "Can't infer a .packages file from an input 'package:*' URI."
  tip: "Try specifying the file explicitly with the --packages option."

PackageNotFound:
  template: "Could not resolve the package '#name' in '#uri'."

InvalidPackageUri:
  template: "Invalid package URI '#uri':\n  #string."

CouldNotParseUri:
  template: "Couldn't parse URI '#string':\n  #string2."

ExpectedUri:
  template: "Expected a URI."

InterpolationInUri:
  template: "Can't use string interpolation in a URI."
  analyzerCode: INVALID_LITERAL_IN_CONFIGURATION
  dart2jsCode: "*fatal*"

IntegerLiteralIsOutOfRange:
  template: "The integer literal #lexeme can't be represented in 64 bits."
  tip: "Try using the BigInt class if you need an integer larger than 9,223,372,036,854,775,807 or less than -9,223,372,036,854,775,808."
  analyzerCode: INTEGER_LITERAL_OUT_OF_RANGE
  dart2jsCode: "*fatal*"

ColonInPlaceOfIn:
  template: "For-in loops use 'in' rather than a colon."
  tip: "Try replacing the colon with the keyword 'in'."
  analyzerCode: COLON_IN_PLACE_OF_IN
  dart2jsCode: "*fatal*"

ExternalFactoryRedirection:
  template: "A redirecting factory can't be external."
  tip: "Try removing the 'external' modifier."
  analyzerCode: EXTERNAL_CONSTRUCTOR_WITH_BODY
  dart2jsCode: "*ignored*"

ArgumentTypeNotAssignable:
  template: "The argument type '#type' can't be assigned to the parameter type '#type2'."
  tip: "Try changing the type of the parameter, or casting the argument to '#type2'."
  analyzerCode: ARGUMENT_TYPE_NOT_ASSIGNABLE
  dart2jsCode: "*ignored*"

InvalidAssignment:
  template: "A value of type '#type' can't be assigned to a variable of type '#type2'."
  tip: "Try changing the type of the left hand side, or casting the right hand side to '#type2'."
  analyzerCode: INVALID_ASSIGNMENT
  dart2jsCode: "*ignored*"
  script: >
    main() {
      int i;
      i = 1.5;
    }

PatchClassTypeVariablesMismatch:
  template: "A patch class must have the same number of type variables as its origin class."

PatchClassOrigin:
  template: "This is the origin class."
  severity: CONTEXT

PatchDeclarationMismatch:
  template: "This patch doesn't match origin declaration."

PatchDeclarationOrigin:
  template: "This is the origin declaration."
  severity: CONTEXT

PatchInjectionFailed:
  template: "Can't inject '#name' into '#uri'."
  tip: "Try adding '@patch'."

PatchNonExternal:
  template: "Can't apply this patch as its origin declaration isn't external."
  tip: "Try adding 'external' to the origin declaration."

InvalidCastFunctionExpr:
  template: "The function expression type '#type' isn't of expected type '#type2'."
  tip: "Change the type of the function expression or the context in which it is used."
  analyzerCode: INVALID_CAST_FUNCTION_EXPR
  dart2jsCode: "*ignored*"

InvalidCastLiteralList:
  template: "The list literal type '#type' isn't of expected type '#type2'."
  tip: "Change the type of the list literal or the context in which it is used."
  analyzerCode: INVALID_CAST_LITERAL_LIST
  dart2jsCode: "*ignored*"

InvalidCastLiteralMap:
  template: "The map literal type '#type' isn't of expected type '#type2'."
  tip: "Change the type of the map literal or the context in which it is used."
  analyzerCode: INVALID_CAST_LITERAL_MAP
  dart2jsCode: "*ignored*"

InvalidCastLocalFunction:
  template: "The local function has type '#type' that isn't of expected type '#type2'."
  tip: "Change the type of the function or the context in which it is used."
  analyzerCode: INVALID_CAST_FUNCTION
  dart2jsCode: "*ignored*"

InvalidCastNewExpr:
  template: "The constructor returns type '#type' that isn't of expected type '#type2'."
  tip: "Change the type of the object being constructed or the context in which it is used."
  analyzerCode: INVALID_CAST_NEW_EXPR
  dart2jsCode: "*ignored*"

InvalidCastStaticMethod:
  template: "The static method has type '#type' that isn't of expected type '#type2'."
  tip: "Change the type of the method or the context in which it is used."
  analyzerCode: INVALID_CAST_METHOD
  dart2jsCode: "*ignored*"

InvalidCastTopLevelFunction:
  template: "The top level function has type '#type' that isn't of expected type '#type2'."
  tip: "Change the type of the function or the context in which it is used."
  analyzerCode: INVALID_CAST_FUNCTION
  dart2jsCode: "*ignored*"

UndefinedGetter:
  template: "The getter '#name' isn't defined for the class '#type'."
  tip: "Try correcting the name to the name of an existing getter, or defining a getter or field named '#name'."
  analyzerCode: UNDEFINED_GETTER
  dart2jsCode: "*ignored*"
  script: >
    class C {}
    main() {
      C c;
      print(c.foo);
    }

UndefinedSetter:
  template: "The setter '#name' isn't defined for the class '#type'."
  tip: "Try correcting the name to the name of an existing setter, or defining a setter or field named '#name'."
  analyzerCode: UNDEFINED_SETTER
  dart2jsCode: "*ignored*"
  script: >
    class C {}
    main() {
      C c;
      c.foo = 0;
    }

UndefinedMethod:
  template: "The method '#name' isn't defined for the class '#type'."
  tip: "Try correcting the name to the name of an existing method, or defining a method named '#name'."
  analyzerCode: UNDEFINED_METHOD
  dart2jsCode: "*ignored*"
  script: >
    class C {}
    main() {
      C c;
      c.foo();
    }

SourceOutlineSummary:
  template: |
    Built outlines for #count compilation units (#count2 bytes) in #num1%.3ms, that is,
    #num2%12.3 bytes/ms, and
    #num3%12.3 ms/compilation unit.

SourceBodySummary:
  template: |
    Built bodies for #count compilation units (#count2 bytes) in #num1%.3ms, that is,
    #num2%12.3 bytes/ms, and
    #num3%12.3 ms/compilation unit.

DillOutlineSummary:
  template: |
    Indexed #count libraries (#count2 bytes) in #num1%.3ms, that is,
    #num2%12.3 bytes/ms, and
    #num3%12.3 ms/libraries.

CantInferTypeDueToInconsistentOverrides:
  template: "Can't infer the type of '#string': overridden members must all have the same type."
  tip: "Specify the type explicitly."
  severity: ERROR
  analyzerCode: INVALID_METHOD_OVERRIDE
  dart2jsCode: "*fatal*"

CantInferTypeDueToCircularity:
  template: "Can't infer the type of '#string': circularity found during type inference."
  tip: "Specify the type explicitly."
  analyzerCode: RECURSIVE_COMPILE_TIME_CONSTANT
  severity: ERROR

AmbiguousSupertypes:
  template: "'#name' can't implement both '#type' and '#type2'"
  severity: ERROR

CantUseSuperBoundedTypeForInstanceCreation:
  template: "Can't use a super-bounded type for instance creation. Got '#type'."
  tip: "Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference."
  severity: ERROR

MixinInferenceNoMatchingClass:
  template: |
    Type parameters could not be inferred for the mixin '#name' because
    '#name2' does not implement the mixin's supertype constraint '#type'.
  severity: ERROR

ImplicitCallOfNonMethod:
  template: "Cannot invoke an instance of '#type' because it declares 'call' to be something other than a method."
  tip: "Try changing 'call' to a method or explicitly invoke 'call'."
  severity: ERROR
  analyzerCode: IMPLICIT_CALL_OF_NON_METHOD
  dart2jsCode: "*fatal*"

ExpectedOneExpression:
  template: "Expected one expression, but found additional input."
  severity: ERROR

ForInLoopNotAssignable:
  template: "Can't assign to this, so it can't be used in a for-in loop."
  severity: ERROR
  statement: "for (1 in []) {}"

ForInLoopExactlyOneVariable:
  template: "A for-in loop can't have more than one loop variable."
  severity: ERROR
  statement: "for (var x, y in []) {}"

ForInLoopElementTypeNotAssignable:
  template: "A value of type '#type' can't be assigned to a variable of type '#type2'."
  tip: "Try changing the type of the variable."
  analyzerCode: FOR_IN_OF_INVALID_ELEMENT_TYPE
  dart2jsCode: "*fatal*"

ForInLoopTypeNotIterable:
  template: "The type '#type' used in the 'for' loop must implement '#type2'."
  analyzerCode: FOR_IN_OF_INVALID_TYPE
  dart2jsCode: "*fatal*"

InitializingFormalTypeMismatch:
  template: "The type of parameter '#name' (#type) is not a subtype of the corresponding field's type (#type2)."
  tip: "Try changing the type of parameter '#name' to a subtype of #type2."
  severity: ERROR_LEGACY_WARNING
  analyzerCode: INVALID_PARAMETER_DECLARATION
  dart2jsCode: "*fatal*"
  script: >
    class C {
      int x;
      C(num this.x);
    }

InitializingFormalTypeMismatchField:
  template: "The field that corresponds to the parameter."
  severity: CONTEXT

UseOfDeprecatedIdentifier:
  template: "'#name' is deprecated."
  severity: IGNORED

InitializeFromDillNotSelfContained:
  template: "Tried to initialize from a previous compilation (#string), but the file was not self-contained. This might be a bug. The Dart team would greatly appreciate if you would take a moment to report this problem at http://dartbug.com/new."
  severity: WARNING
  frontendInternal: true
  external: test/incremental_load_from_invalid_dill_test.dart

InitializeFromDillUnknownProblem:
  template: "Tried to initialize from a previous compilation (#string), but couldn't. Error message was '#string2'. This might be a bug. The Dart team would greatly appreciate if you would take a moment to report this problem at http://dartbug.com/new."
  severity: WARNING
  frontendInternal: true
  external: test/incremental_load_from_invalid_dill_test.dart

MissingExplicitTypeArguments:
  template: "No type arguments provided, #count possible."
  severity: IGNORED

WebLiteralCannotBeRepresentedExactly:
  template: "The integer literal #string can't be represented exactly in JavaScript."
  tip: "Try changing the literal to something that can be represented in Javascript. In Javascript #string2 is the nearest value that can be represented exactly."
  severity: ERROR
  dart2jsCode: "*fatal*"

BoundIssueViaRawTypeWithNonSimpleBounds:
  template: "Generic type '#name' can't be used without type arguments in a type variable bound."
  tip: "Try providing type arguments to '#name' here."
  severity: ERROR
  analyzerCode: SNOT_INSTANTIATED_BOUND
  dart2jsCode: "*fatal*"
  script: >
    class Hest<X extends Hest<X>> {}
    class Fisk<Y extends Hest> {}

NonSimpleBoundViaVariable:
  template: "Bound of this variable references variable '#name' from the same declaration."
  severity: CONTEXT

BoundIssueViaLoopNonSimplicity:
  template: "Generic type '#name' can't be used without type arguments in the bounds of its own type variables."
  tip: "Try providing type arguments to '#name' here."
  severity: ERROR
  analyzerCode: NOT_INSTANTIATED_BOUND
  dart2jsCode: "*fatal*"
  script: >
    class Hest<X extends Hest> {}

BoundIssueViaCycleNonSimplicity:
  template: "Generic type '#name' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through '#name2'."
  tip: "Try providing type arguments to '#name2' here or to some other raw types in the bounds along the reference chain."
  severity: ERROR
  analyzerCode: NOT_INSTANTIATED_BOUND
  dart2jsCode: "*fatal*"
  script: >
    class Hest<X extends Fisk> {}
    class Fisk<Y extends Hest> {}

NonSimpleBoundViaReference:
  template: "Bound of this variable references raw type '#name'."
  severity: CONTEXT

CantUsePrefixAsExpression:
  template: "A prefix can't be used as an expression."
  severity: ERROR
  analyzerCode: PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
  dart2jsCode: "*fatal*"
  script: |
    import "dart:core" as prefix;

    main() {
      for (prefix in []) {}
    }

CantUsePrefixWithNullAware:
  template: "A prefix can't be used with null-aware operators."
  tip: "It should be safe to remove the '?' as a prefix is never null."
  severity: ERROR
  analyzerCode: PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
  dart2jsCode: "*fatal*"
  script: |
    import "dart:core" as prefix;

    main() {
      prefix?.Object;
    }

CantUseDeferredPrefixAsConstant:
  template: >
    '#lexeme' can't be used in a constant expression because it's marked as
    'deferred' which means it isn't available until loaded.
  tip: >
    Try moving the constant from the deferred library, or removing 'deferred'
    from the import.
  analyzerCode: CONST_DEFERRED_CLASS
  dart2jsCode: "*fatal*"
  severity: ERROR
  script: |
    import "dart:core" deferred as prefix;

    main() {
      const prefix.Object();
    }

CyclicRedirectingFactoryConstructors:
  template: "Cyclic definition of factory '#name'."
  analyzerCode: RECURSIVE_FACTORY_REDIRECT
  dart2jsCode: "*fatal*"
  severity: ERROR
  script: |
    class Foo {
      factory Foo.foo() = Foo.bar;
      factory Foo.bar() = Foo.foo;
    }
    main() { var foo = new Foo.foo(); }

GenericFunctionTypeInBound:
  template: "Type variables can't have generic function types in their bounds."
  analyzerCode: GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND
  dart2jsCode: "*fatal*"
  severity: ERROR
  script: |
    class Hest<X extends Y Function<Y>(Y)> {}
