// Copyright (c) 2011, 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.

library dart2js.messages;

import '../tokens/token.dart' show ErrorToken, Token;

import 'invariant.dart' show invariant;
import 'spannable.dart' show CURRENT_ELEMENT_SPANNABLE;

import 'dart2js_messages.dart' as dart2js_messages;
import 'shared_messages.dart' as shared_messages;

/// Keys for the [MessageTemplate]s.
enum MessageKind {
  ABSTRACT_CLASS_INSTANTIATION,
  ABSTRACT_GETTER,
  ABSTRACT_METHOD,
  ABSTRACT_SETTER,
  ACCESSED_IN_CLOSURE,
  ACCESSED_IN_CLOSURE_HERE,
  ADDITIONAL_ARGUMENT,
  ADDITIONAL_TYPE_ARGUMENT,
  ALREADY_INITIALIZED,
  AMBIGUOUS_LOCATION,
  AMBIGUOUS_REEXPORT,
  ASSERT_IS_GIVEN_NAMED_ARGUMENTS,
  ASSIGNING_FINAL_FIELD_IN_SUPER,
  ASSIGNING_METHOD,
  ASSIGNING_METHOD_IN_SUPER,
  ASSIGNING_TYPE,
  ASYNC_KEYWORD_AS_IDENTIFIER,
  ASYNC_MODIFIER_ON_ABSTRACT_METHOD,
  ASYNC_MODIFIER_ON_CONSTRUCTOR,
  ASYNC_MODIFIER_ON_SETTER,
  AWAIT_MEMBER_NOT_FOUND,
  AWAIT_MEMBER_NOT_FOUND_IN_CLOSURE,
  BAD_INPUT_CHARACTER,
  BEFORE_TOP_LEVEL,
  BINARY_OPERATOR_BAD_ARITY,
  BODY_EXPECTED,
  CALL_NOT_SUPPORTED_ON_NATIVE_CLASS,
  CANNOT_EXTEND,
  CANNOT_EXTEND_ENUM,
  CANNOT_EXTEND_MALFORMED,
  CANNOT_FIND_CONSTRUCTOR,
  CANNOT_FIND_UNNAMED_CONSTRUCTOR,
  CANNOT_IMPLEMENT,
  CANNOT_IMPLEMENT_ENUM,
  CANNOT_IMPLEMENT_MALFORMED,
  CANNOT_INSTANTIATE_ENUM,
  CANNOT_INSTANTIATE_TYPE_VARIABLE,
  CANNOT_INSTANTIATE_TYPEDEF,
  CANNOT_MIXIN,
  CANNOT_MIXIN_ENUM,
  CANNOT_MIXIN_MALFORMED,
  CANNOT_OVERRIDE_FIELD_WITH_METHOD,
  CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT,
  CANNOT_OVERRIDE_GETTER_WITH_METHOD,
  CANNOT_OVERRIDE_GETTER_WITH_METHOD_CONT,
  CANNOT_OVERRIDE_METHOD_WITH_FIELD,
  CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT,
  CANNOT_OVERRIDE_METHOD_WITH_GETTER,
  CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT,
  CANNOT_RESOLVE,
  CANNOT_RESOLVE_AWAIT,
  CANNOT_RESOLVE_AWAIT_IN_CLOSURE,
  CANNOT_RESOLVE_CONSTRUCTOR,
  CANNOT_RESOLVE_CONSTRUCTOR_FOR_IMPLICIT,
  CANNOT_RESOLVE_GETTER,
  CANNOT_RESOLVE_IN_INITIALIZER,
  CANNOT_RESOLVE_SETTER,
  CANNOT_RESOLVE_TYPE,
  CANNOT_RETURN_FROM_CONSTRUCTOR,
  CLASS_NAME_EXPECTED,
  COMPILER_CRASHED,
  COMPLEX_RETURNING_NSM,
  COMPLEX_THROWING_NSM,
  CONSIDER_ANALYZE_ALL,
  CONST_CALLS_NON_CONST,
  CONST_CALLS_NON_CONST_FOR_IMPLICIT,
  CONST_CONSTRUCTOR_HAS_BODY,
  CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS,
  CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_CONSTRUCTOR,
  CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_FIELD,
  CONST_LOOP_VARIABLE,
  CONST_MAP_KEY_OVERRIDES_EQUALS,
  CONST_WITHOUT_INITIALIZER,
  CONSTRUCTOR_CALL_EXPECTED,
  CONSTRUCTOR_IS_NOT_CONST,
  CONSTRUCTOR_WITH_RETURN_TYPE,
  CYCLIC_CLASS_HIERARCHY,
  CYCLIC_COMPILE_TIME_CONSTANTS,
  CYCLIC_REDIRECTING_FACTORY,
  CYCLIC_TYPE_VARIABLE,
  CYCLIC_TYPEDEF,
  CYCLIC_TYPEDEF_ONE,
  DART_EXT_NOT_SUPPORTED,
  DEFERRED_COMPILE_TIME_CONSTANT,
  DEFERRED_COMPILE_TIME_CONSTANT_CONSTRUCTION,
  DEFERRED_LIBRARY_DART_2_DART,
  DEFERRED_LIBRARY_DUPLICATE_PREFIX,
  DEFERRED_LIBRARY_WITHOUT_PREFIX,
  DEFERRED_OLD_SYNTAX,
  DEFERRED_TYPE_ANNOTATION,
  DEPRECATED_TYPEDEF_MIXIN_SYNTAX,
  DIRECTLY_THROWING_NSM,
  DISALLOWED_LIBRARY_IMPORT,
  DUPLICATE_DEFINITION,
  DUPLICATE_EXPORT,
  DUPLICATE_EXPORT_CONT,
  DUPLICATE_EXPORT_DECL,
  DUPLICATE_EXTENDS_IMPLEMENTS,
  DUPLICATE_IMPLEMENTS,
  DUPLICATE_IMPORT,
  DUPLICATE_INITIALIZER,
  DUPLICATE_LABEL,
  DUPLICATE_SUPER_INITIALIZER,
  DUPLICATE_TYPE_VARIABLE_NAME,
  DUPLICATED_LIBRARY_NAME,
  DUPLICATED_LIBRARY_RESOURCE,
  DUPLICATED_PART_OF,
  DUPLICATED_RESOURCE,
  EMPTY_CATCH_DECLARATION,
  EMPTY_ENUM_DECLARATION,
  EMPTY_HIDE,
  EQUAL_MAP_ENTRY_KEY,
  EMPTY_SHOW,
  EXISTING_DEFINITION,
  EXISTING_LABEL,
  EXPECTED_IDENTIFIER_NOT_RESERVED_WORD,
  EXPERIMENTAL_ASSERT_MESSAGE,
  EXPONENT_MISSING,
  EXPORT_BEFORE_PARTS,
  EXTERNAL_WITH_BODY,
  EXTRA_CATCH_DECLARATION,
  EXTRA_FORMALS,
  EXTRANEOUS_MODIFIER,
  EXTRANEOUS_MODIFIER_REPLACE,
  FACTORY_REDIRECTION_IN_NON_FACTORY,
  FINAL_FUNCTION_TYPE_PARAMETER,
  FINAL_WITHOUT_INITIALIZER,
  FORIN_NOT_ASSIGNABLE,
  FORMAL_DECLARED_CONST,
  FORMAL_DECLARED_STATIC,
  FUNCTION_TYPE_FORMAL_WITH_DEFAULT,
  FUNCTION_WITH_INITIALIZER,
  GENERIC,
  GETTER_MISMATCH,
  GETTER_NOT_FOUND,
  HEX_DIGIT_EXPECTED,
  HIDDEN_HINTS,
  HIDDEN_IMPLICIT_IMPORT,
  HIDDEN_IMPORT,
  HIDDEN_WARNINGS,
  HIDDEN_WARNINGS_HINTS,
  IF_NULL_ASSIGNING_TYPE,
  ILLEGAL_CONST_FIELD_MODIFIER,
  ILLEGAL_CONSTRUCTOR_MODIFIERS,
  ILLEGAL_FINAL_METHOD_MODIFIER,
  ILLEGAL_MIXIN_APPLICATION_MODIFIERS,
  ILLEGAL_MIXIN_CONSTRUCTOR,
  ILLEGAL_MIXIN_CYCLE,
  ILLEGAL_MIXIN_OBJECT,
  ILLEGAL_MIXIN_SUPER_USE,
  ILLEGAL_MIXIN_SUPERCLASS,
  ILLEGAL_MIXIN_WITH_SUPER,
  ILLEGAL_SETTER_FORMALS,
  ILLEGAL_STATIC,
  ILLEGAL_SUPER_SEND,
  IMPORT_BEFORE_PARTS,
  IMPORT_EXPERIMENTAL_MIRRORS,
  IMPORT_PART_OF,
  IMPORT_PART_OF_HERE,
  IMPORTED_HERE,
  INHERIT_GETTER_AND_METHOD,
  INHERITED_EXPLICIT_GETTER,
  INHERITED_IMPLICIT_GETTER,
  INHERITED_METHOD,
  INJECTED_PUBLIC_MEMBER,
  INIT_STATIC_FIELD,
  INITIALIZING_FORMAL_NOT_ALLOWED,
  INSTANCE_STATIC_SAME_NAME,
  INSTANCE_STATIC_SAME_NAME_CONT,
  INTERNAL_LIBRARY,
  INTERNAL_LIBRARY_FROM,
  INVALID_ARGUMENT_AFTER_NAMED,
  INVALID_AWAIT,
  INVALID_AWAIT_FOR,
  INVALID_AWAIT_FOR_IN,
  INVALID_BREAK,
  INVALID_CASE_DEFAULT,
  INVALID_CONSTRUCTOR_ARGUMENTS,
  INVALID_CONSTRUCTOR_NAME,
  INVALID_CONTINUE,
  INVALID_FOR_IN,
  INVALID_INITIALIZER,
  INVALID_METADATA,
  INVALID_METADATA_GENERIC,
  INVALID_OVERRIDDEN_FIELD,
  INVALID_OVERRIDDEN_GETTER,
  INVALID_OVERRIDDEN_METHOD,
  INVALID_OVERRIDDEN_SETTER,
  INVALID_OVERRIDE_FIELD,
  INVALID_OVERRIDE_FIELD_WITH_GETTER,
  INVALID_OVERRIDE_FIELD_WITH_SETTER,
  INVALID_OVERRIDE_GETTER,
  INVALID_OVERRIDE_GETTER_WITH_FIELD,
  INVALID_OVERRIDE_METHOD,
  INVALID_OVERRIDE_SETTER,
  INVALID_OVERRIDE_SETTER_WITH_FIELD,
  INVALID_PACKAGE_CONFIG,
  INVALID_PACKAGE_URI,
  INVALID_PARAMETER,
  INVALID_RECEIVER_IN_INITIALIZER,
  INVALID_SOURCE_FILE_LOCATION,
  INVALID_SYMBOL,
  INVALID_SYNC_MODIFIER,
  INVALID_TYPE_VARIABLE_BOUND,
  INVALID_UNNAMED_CONSTRUCTOR_NAME,
  INVALID_URI,
  INVALID_USE_OF_SUPER,
  INVALID_YIELD,
  JS_INTEROP_CLASS_CANNOT_EXTEND_DART_CLASS,
  JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER,
  JS_OBJECT_LITERAL_CONSTRUCTOR_WITH_POSITIONAL_ARGUMENTS,
  JS_INTEROP_METHOD_WITH_NAMED_ARGUMENTS,
  JS_PLACEHOLDER_CAPTURE,
  LIBRARY_NAME_MISMATCH,
  LIBRARY_NOT_FOUND,
  LIBRARY_NOT_SUPPORTED,
  LIBRARY_TAG_MUST_BE_FIRST,
  MAIN_NOT_A_FUNCTION,
  MAIN_WITH_EXTRA_PARAMETER,
  MALFORMED_STRING_LITERAL,
  MEMBER_NOT_FOUND,
  MEMBER_NOT_STATIC,
  MEMBER_USES_CLASS_NAME,
  METHOD_NOT_FOUND,
  MINUS_OPERATOR_BAD_ARITY,
  MIRROR_BLOAT,
  MIRROR_IMPORT,
  MIRROR_IMPORT_NO_USAGE,
  MIRRORS_CANNOT_FIND_IN_ELEMENT,
  MIRRORS_CANNOT_RESOLVE_IN_CURRENT_LIBRARY,
  MIRRORS_CANNOT_RESOLVE_IN_LIBRARY,
  MIRRORS_EXPECTED_STRING,
  MIRRORS_EXPECTED_STRING_OR_LIST,
  MIRRORS_EXPECTED_STRING_OR_TYPE,
  MIRRORS_EXPECTED_STRING_TYPE_OR_LIST,
  MIRRORS_LIBRARY_NOT_SUPPORT_BY_BACKEND,
  MISSING_ARGUMENT,
  MISSING_ENUM_CASES,
  MISSING_FACTORY_KEYWORD,
  MISSING_FORMALS,
  MISSING_LIBRARY_NAME,
  MISSING_MAIN,
  MISSING_PART_OF_TAG,
  MISSING_TOKEN_AFTER_THIS,
  MISSING_TOKEN_BEFORE_THIS,
  MISSING_TYPE_ARGUMENT,
  MULTI_INHERITANCE,
  NAMED_ARGUMENT_NOT_FOUND,
  NAMED_FUNCTION_EXPRESSION,
  NAMED_PARAMETER_WITH_EQUALS,
  NATIVE_NOT_SUPPORTED,
  NO_BREAK_TARGET,
  NO_CATCH_NOR_FINALLY,
  NO_COMMON_SUBTYPES,
  NO_CONTINUE_TARGET,
  NO_INSTANCE_AVAILABLE,
  NO_MATCHING_CONSTRUCTOR,
  NO_MATCHING_CONSTRUCTOR_FOR_IMPLICIT,
  NO_STATIC_OVERRIDE,
  NO_STATIC_OVERRIDE_CONT,
  NO_SUCH_LIBRARY_MEMBER,
  NO_SUCH_METHOD_IN_NATIVE,
  NO_SUCH_SUPER_MEMBER,
  NO_SUPER_IN_STATIC,
  NO_THIS_AVAILABLE,
  NON_CONST_BLOAT,
  NOT_A_COMPILE_TIME_CONSTANT,
  NOT_A_FIELD,
  NOT_A_PREFIX,
  NOT_A_TYPE,
  NOT_ASSIGNABLE,
  NOT_CALLABLE,
  NOT_INSTANCE_FIELD,
  NOT_MORE_SPECIFIC,
  NOT_MORE_SPECIFIC_SUBTYPE,
  NOT_MORE_SPECIFIC_SUGGESTION,
  NULL_NOT_ALLOWED,
  ONLY_ONE_LIBRARY_TAG,
  OPERATOR_NAMED_PARAMETERS,
  OPERATOR_NOT_FOUND,
  OPERATOR_OPTIONAL_PARAMETERS,
  OPTIONAL_PARAMETER_IN_CATCH,
  OVERRIDE_EQUALS_NOT_HASH_CODE,
  PARAMETER_NAME_EXPECTED,
  PARAMETER_WITH_MODIFIER_IN_CATCH,
  PARAMETER_WITH_TYPE_IN_CATCH,
  PATCH_EXTERNAL_WITHOUT_IMPLEMENTATION,
  PATCH_NO_GETTER,
  PATCH_NO_SETTER,
  PATCH_NON_CLASS,
  PATCH_NON_CONSTRUCTOR,
  PATCH_NON_EXISTING,
  PATCH_NON_EXTERNAL,
  PATCH_NON_FUNCTION,
  PATCH_NON_GETTER,
  PATCH_NON_SETTER,
  PATCH_NONPATCHABLE,
  PATCH_OPTIONAL_PARAMETER_COUNT_MISMATCH,
  PATCH_OPTIONAL_PARAMETER_NAMED_MISMATCH,
  PATCH_PARAMETER_MISMATCH,
  PATCH_PARAMETER_TYPE_MISMATCH,
  PATCH_POINT_TO_CLASS,
  PATCH_POINT_TO_CONSTRUCTOR,
  PATCH_POINT_TO_FUNCTION,
  PATCH_POINT_TO_GETTER,
  PATCH_POINT_TO_PARAMETER,
  PATCH_POINT_TO_SETTER,
  PATCH_REQUIRED_PARAMETER_COUNT_MISMATCH,
  PATCH_RETURN_TYPE_MISMATCH,
  PLEASE_REPORT_THE_CRASH,
  POSITIONAL_PARAMETER_WITH_EQUALS,
  POTENTIAL_MUTATION,
  POTENTIAL_MUTATION_HERE,
  POTENTIAL_MUTATION_IN_CLOSURE,
  POTENTIAL_MUTATION_IN_CLOSURE_HERE,
  PREAMBLE,
  PREFIX_AS_EXPRESSION,
  PRIVATE_ACCESS,
  PRIVATE_IDENTIFIER,
  PRIVATE_NAMED_PARAMETER,
  READ_SCRIPT_ERROR,
  READ_SELF_ERROR,
  REDIRECTING_CONSTRUCTOR_CYCLE,
  REDIRECTING_CONSTRUCTOR_HAS_BODY,
  REDIRECTING_CONSTRUCTOR_HAS_INITIALIZER,
  REDIRECTING_FACTORY_WITH_DEFAULT,
  REFERENCE_IN_INITIALIZATION,
  REQUIRED_PARAMETER_WITH_DEFAULT,
  RETURN_IN_GENERATOR,
  RETURN_NOTHING,
  RETURN_VALUE_IN_VOID,
  SETTER_MISMATCH,
  SETTER_NOT_FOUND,
  SETTER_NOT_FOUND_IN_SUPER,
  STATIC_FUNCTION_BLOAT,
  STRING_EXPECTED,
  SUPER_CALL_TO_FACTORY,
  SUPER_INITIALIZER_IN_OBJECT,
  SWITCH_CASE_FORBIDDEN,
  SWITCH_CASE_TYPES_NOT_EQUAL,
  SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
  SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
  TERNARY_OPERATOR_BAD_ARITY,
  THIS_CALL_TO_FACTORY,
  THIS_IS_THE_DECLARATION,
  THIS_IS_THE_METHOD,
  THIS_IS_THE_PART_OF_TAG,
  THIS_PROPERTY,
  THROW_WITHOUT_EXPRESSION,
  TOP_LEVEL_VARIABLE_DECLARED_STATIC,
  TYPE_ARGUMENT_COUNT_MISMATCH,
  TYPE_VARIABLE_IN_CONSTANT,
  TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
  TYPEDEF_FORMAL_WITH_DEFAULT,
  UNARY_OPERATOR_BAD_ARITY,
  UNBOUND_LABEL,
  UNIMPLEMENTED_EXPLICIT_GETTER,
  UNIMPLEMENTED_EXPLICIT_SETTER,
  UNIMPLEMENTED_GETTER,
  UNIMPLEMENTED_GETTER_ONE,
  UNIMPLEMENTED_IMPLICIT_GETTER,
  UNIMPLEMENTED_IMPLICIT_SETTER,
  UNIMPLEMENTED_METHOD,
  UNIMPLEMENTED_METHOD_CONT,
  UNIMPLEMENTED_METHOD_ONE,
  UNIMPLEMENTED_SETTER,
  UNIMPLEMENTED_SETTER_ONE,
  UNMATCHED_TOKEN,
  UNRECOGNIZED_VERSION_OF_LOOKUP_MAP,
  UNSUPPORTED_BANG_EQ_EQ,
  UNSUPPORTED_EQ_EQ_EQ,
  UNSUPPORTED_LITERAL_SYMBOL,
  UNSUPPORTED_PREFIX_PLUS,
  UNSUPPORTED_THROW_WITHOUT_EXP,
  UNTERMINATED_COMMENT,
  UNTERMINATED_STRING,
  UNTERMINATED_TOKEN,
  UNUSED_CLASS,
  UNUSED_LABEL,
  UNUSED_METHOD,
  UNUSED_TYPEDEF,
  VAR_FUNCTION_TYPE_PARAMETER,
  VOID_EXPRESSION,
  VOID_NOT_ALLOWED,
  VOID_VARIABLE,
  WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT,
  WRONG_NUMBER_OF_ARGUMENTS_FOR_ASSERT,
  YIELDING_MODIFIER_ON_ARROW_BODY,
}

const _KIND_TO_STRING_MAP = const <MessageKind, String>{
  MessageKind.ABSTRACT_CLASS_INSTANTIATION: "ABSTRACT_CLASS_INSTANTIATION",
  MessageKind.ABSTRACT_GETTER: "ABSTRACT_GETTER",
  MessageKind.ABSTRACT_METHOD: "ABSTRACT_METHOD",
  MessageKind.ABSTRACT_SETTER: "ABSTRACT_SETTER",
  MessageKind.ACCESSED_IN_CLOSURE: "ACCESSED_IN_CLOSURE",
  MessageKind.ACCESSED_IN_CLOSURE_HERE: "ACCESSED_IN_CLOSURE_HERE",
  MessageKind.ADDITIONAL_ARGUMENT: "ADDITIONAL_ARGUMENT",
  MessageKind.ADDITIONAL_TYPE_ARGUMENT: "ADDITIONAL_TYPE_ARGUMENT",
  MessageKind.ALREADY_INITIALIZED: "ALREADY_INITIALIZED",
  MessageKind.AMBIGUOUS_LOCATION: "AMBIGUOUS_LOCATION",
  MessageKind.AMBIGUOUS_REEXPORT: "AMBIGUOUS_REEXPORT",
  MessageKind.ASSERT_IS_GIVEN_NAMED_ARGUMENTS:
      "ASSERT_IS_GIVEN_NAMED_ARGUMENTS",
  MessageKind.ASSIGNING_FINAL_FIELD_IN_SUPER: "ASSIGNING_FINAL_FIELD_IN_SUPER",
  MessageKind.ASSIGNING_METHOD: "ASSIGNING_METHOD",
  MessageKind.ASSIGNING_METHOD_IN_SUPER: "ASSIGNING_METHOD_IN_SUPER",
  MessageKind.ASSIGNING_TYPE: "ASSIGNING_TYPE",
  MessageKind.ASYNC_KEYWORD_AS_IDENTIFIER: "ASYNC_KEYWORD_AS_IDENTIFIER",
  MessageKind.ASYNC_MODIFIER_ON_ABSTRACT_METHOD:
      "ASYNC_MODIFIER_ON_ABSTRACT_METHOD",
  MessageKind.ASYNC_MODIFIER_ON_CONSTRUCTOR: "ASYNC_MODIFIER_ON_CONSTRUCTOR",
  MessageKind.ASYNC_MODIFIER_ON_SETTER: "ASYNC_MODIFIER_ON_SETTER",
  MessageKind.AWAIT_MEMBER_NOT_FOUND: "AWAIT_MEMBER_NOT_FOUND",
  MessageKind.AWAIT_MEMBER_NOT_FOUND_IN_CLOSURE:
      "AWAIT_MEMBER_NOT_FOUND_IN_CLOSURE",
  MessageKind.BAD_INPUT_CHARACTER: "BAD_INPUT_CHARACTER",
  MessageKind.BEFORE_TOP_LEVEL: "BEFORE_TOP_LEVEL",
  MessageKind.BINARY_OPERATOR_BAD_ARITY: "BINARY_OPERATOR_BAD_ARITY",
  MessageKind.BODY_EXPECTED: "BODY_EXPECTED",
  MessageKind.CALL_NOT_SUPPORTED_ON_NATIVE_CLASS:
      "CALL_NOT_SUPPORTED_ON_NATIVE_CLASS",
  MessageKind.CANNOT_EXTEND: "CANNOT_EXTEND",
  MessageKind.CANNOT_EXTEND_ENUM: "CANNOT_EXTEND_ENUM",
  MessageKind.CANNOT_EXTEND_MALFORMED: "CANNOT_EXTEND_MALFORMED",
  MessageKind.CANNOT_FIND_CONSTRUCTOR: "CANNOT_FIND_CONSTRUCTOR",
  MessageKind.CANNOT_FIND_UNNAMED_CONSTRUCTOR:
      "CANNOT_FIND_UNNAMED_CONSTRUCTOR",
  MessageKind.CANNOT_IMPLEMENT: "CANNOT_IMPLEMENT",
  MessageKind.CANNOT_IMPLEMENT_ENUM: "CANNOT_IMPLEMENT_ENUM",
  MessageKind.CANNOT_IMPLEMENT_MALFORMED: "CANNOT_IMPLEMENT_MALFORMED",
  MessageKind.CANNOT_INSTANTIATE_ENUM: "CANNOT_INSTANTIATE_ENUM",
  MessageKind.CANNOT_INSTANTIATE_TYPE_VARIABLE:
      "CANNOT_INSTANTIATE_TYPE_VARIABLE",
  MessageKind.CANNOT_INSTANTIATE_TYPEDEF: "CANNOT_INSTANTIATE_TYPEDEF",
  MessageKind.CANNOT_MIXIN: "CANNOT_MIXIN",
  MessageKind.CANNOT_MIXIN_ENUM: "CANNOT_MIXIN_ENUM",
  MessageKind.CANNOT_MIXIN_MALFORMED: "CANNOT_MIXIN_MALFORMED",
  MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD:
      "CANNOT_OVERRIDE_FIELD_WITH_METHOD",
  MessageKind.CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT:
      "CANNOT_OVERRIDE_FIELD_WITH_METHOD_CONT",
  MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD:
      "CANNOT_OVERRIDE_GETTER_WITH_METHOD",
  MessageKind.CANNOT_OVERRIDE_GETTER_WITH_METHOD_CONT:
      "CANNOT_OVERRIDE_GETTER_WITH_METHOD_CONT",
  MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD:
      "CANNOT_OVERRIDE_METHOD_WITH_FIELD",
  MessageKind.CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT:
      "CANNOT_OVERRIDE_METHOD_WITH_FIELD_CONT",
  MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER:
      "CANNOT_OVERRIDE_METHOD_WITH_GETTER",
  MessageKind.CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT:
      "CANNOT_OVERRIDE_METHOD_WITH_GETTER_CONT",
  MessageKind.CANNOT_RESOLVE: "CANNOT_RESOLVE",
  MessageKind.CANNOT_RESOLVE_AWAIT: "CANNOT_RESOLVE_AWAIT",
  MessageKind.CANNOT_RESOLVE_AWAIT_IN_CLOSURE:
      "CANNOT_RESOLVE_AWAIT_IN_CLOSURE",
  MessageKind.CANNOT_RESOLVE_CONSTRUCTOR: "CANNOT_RESOLVE_CONSTRUCTOR",
  MessageKind.CANNOT_RESOLVE_CONSTRUCTOR_FOR_IMPLICIT:
      "CANNOT_RESOLVE_CONSTRUCTOR_FOR_IMPLICIT",
  MessageKind.CANNOT_RESOLVE_GETTER: "CANNOT_RESOLVE_GETTER",
  MessageKind.CANNOT_RESOLVE_IN_INITIALIZER: "CANNOT_RESOLVE_IN_INITIALIZER",
  MessageKind.CANNOT_RESOLVE_SETTER: "CANNOT_RESOLVE_SETTER",
  MessageKind.CANNOT_RESOLVE_TYPE: "CANNOT_RESOLVE_TYPE",
  MessageKind.CANNOT_RETURN_FROM_CONSTRUCTOR: "CANNOT_RETURN_FROM_CONSTRUCTOR",
  MessageKind.CLASS_NAME_EXPECTED: "CLASS_NAME_EXPECTED",
  MessageKind.COMPILER_CRASHED: "COMPILER_CRASHED",
  MessageKind.COMPLEX_RETURNING_NSM: "COMPLEX_RETURNING_NSM",
  MessageKind.COMPLEX_THROWING_NSM: "COMPLEX_THROWING_NSM",
  MessageKind.CONSIDER_ANALYZE_ALL: "CONSIDER_ANALYZE_ALL",
  MessageKind.CONST_CALLS_NON_CONST: "CONST_CALLS_NON_CONST",
  MessageKind.CONST_CALLS_NON_CONST_FOR_IMPLICIT:
      "CONST_CALLS_NON_CONST_FOR_IMPLICIT",
  MessageKind.CONST_CONSTRUCTOR_HAS_BODY: "CONST_CONSTRUCTOR_HAS_BODY",
  MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS:
      "CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS",
  MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_CONSTRUCTOR:
      "CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_CONSTRUCTOR",
  MessageKind.CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_FIELD:
      "CONST_CONSTRUCTOR_WITH_NONFINAL_FIELDS_FIELD",
  MessageKind.CONST_LOOP_VARIABLE: "CONST_LOOP_VARIABLE",
  MessageKind.CONST_MAP_KEY_OVERRIDES_EQUALS: "CONST_MAP_KEY_OVERRIDES_EQUALS",
  MessageKind.CONST_WITHOUT_INITIALIZER: "CONST_WITHOUT_INITIALIZER",
  MessageKind.CONSTRUCTOR_CALL_EXPECTED: "CONSTRUCTOR_CALL_EXPECTED",
  MessageKind.CONSTRUCTOR_IS_NOT_CONST: "CONSTRUCTOR_IS_NOT_CONST",
  MessageKind.CONSTRUCTOR_WITH_RETURN_TYPE: "CONSTRUCTOR_WITH_RETURN_TYPE",
  MessageKind.CYCLIC_CLASS_HIERARCHY: "CYCLIC_CLASS_HIERARCHY",
  MessageKind.CYCLIC_COMPILE_TIME_CONSTANTS: "CYCLIC_COMPILE_TIME_CONSTANTS",
  MessageKind.CYCLIC_REDIRECTING_FACTORY: "CYCLIC_REDIRECTING_FACTORY",
  MessageKind.CYCLIC_TYPE_VARIABLE: "CYCLIC_TYPE_VARIABLE",
  MessageKind.CYCLIC_TYPEDEF: "CYCLIC_TYPEDEF",
  MessageKind.CYCLIC_TYPEDEF_ONE: "CYCLIC_TYPEDEF_ONE",
  MessageKind.DART_EXT_NOT_SUPPORTED: "DART_EXT_NOT_SUPPORTED",
  MessageKind.DEFERRED_COMPILE_TIME_CONSTANT: "DEFERRED_COMPILE_TIME_CONSTANT",
  MessageKind.DEFERRED_COMPILE_TIME_CONSTANT_CONSTRUCTION:
      "DEFERRED_COMPILE_TIME_CONSTANT_CONSTRUCTION",
  MessageKind.DEFERRED_LIBRARY_DART_2_DART: "DEFERRED_LIBRARY_DART_2_DART",
  MessageKind.DEFERRED_LIBRARY_DUPLICATE_PREFIX:
      "DEFERRED_LIBRARY_DUPLICATE_PREFIX",
  MessageKind.DEFERRED_LIBRARY_WITHOUT_PREFIX:
      "DEFERRED_LIBRARY_WITHOUT_PREFIX",
  MessageKind.DEFERRED_OLD_SYNTAX: "DEFERRED_OLD_SYNTAX",
  MessageKind.DEFERRED_TYPE_ANNOTATION: "DEFERRED_TYPE_ANNOTATION",
  MessageKind.DEPRECATED_TYPEDEF_MIXIN_SYNTAX:
      "DEPRECATED_TYPEDEF_MIXIN_SYNTAX",
  MessageKind.DIRECTLY_THROWING_NSM: "DIRECTLY_THROWING_NSM",
  MessageKind.DISALLOWED_LIBRARY_IMPORT: "DISALLOWED_LIBRARY_IMPORT",
  MessageKind.DUPLICATE_DEFINITION: "DUPLICATE_DEFINITION",
  MessageKind.DUPLICATE_EXPORT: "DUPLICATE_EXPORT",
  MessageKind.DUPLICATE_EXPORT_CONT: "DUPLICATE_EXPORT_CONT",
  MessageKind.DUPLICATE_EXPORT_DECL: "DUPLICATE_EXPORT_DECL",
  MessageKind.DUPLICATE_EXTENDS_IMPLEMENTS: "DUPLICATE_EXTENDS_IMPLEMENTS",
  MessageKind.DUPLICATE_IMPLEMENTS: "DUPLICATE_IMPLEMENTS",
  MessageKind.DUPLICATE_IMPORT: "DUPLICATE_IMPORT",
  MessageKind.DUPLICATE_INITIALIZER: "DUPLICATE_INITIALIZER",
  MessageKind.DUPLICATE_LABEL: "DUPLICATE_LABEL",
  MessageKind.DUPLICATE_SUPER_INITIALIZER: "DUPLICATE_SUPER_INITIALIZER",
  MessageKind.DUPLICATE_TYPE_VARIABLE_NAME: "DUPLICATE_TYPE_VARIABLE_NAME",
  MessageKind.DUPLICATED_LIBRARY_NAME: "DUPLICATED_LIBRARY_NAME",
  MessageKind.DUPLICATED_LIBRARY_RESOURCE: "DUPLICATED_LIBRARY_RESOURCE",
  MessageKind.DUPLICATED_PART_OF: "DUPLICATED_PART_OF",
  MessageKind.DUPLICATED_RESOURCE: "DUPLICATED_RESOURCE",
  MessageKind.EMPTY_CATCH_DECLARATION: "EMPTY_CATCH_DECLARATION",
  MessageKind.EMPTY_ENUM_DECLARATION: "EMPTY_ENUM_DECLARATION",
  MessageKind.EMPTY_HIDE: "EMPTY_HIDE",
  MessageKind.EQUAL_MAP_ENTRY_KEY: "EQUAL_MAP_ENTRY_KEY",
  MessageKind.EMPTY_SHOW: "EMPTY_SHOW",
  MessageKind.EXISTING_DEFINITION: "EXISTING_DEFINITION",
  MessageKind.EXISTING_LABEL: "EXISTING_LABEL",
  MessageKind.EXPECTED_IDENTIFIER_NOT_RESERVED_WORD:
      "EXPECTED_IDENTIFIER_NOT_RESERVED_WORD",
  MessageKind.EXPERIMENTAL_ASSERT_MESSAGE: "EXPERIMENTAL_ASSERT_MESSAGE",
  MessageKind.EXPONENT_MISSING: "EXPONENT_MISSING",
  MessageKind.EXPORT_BEFORE_PARTS: "EXPORT_BEFORE_PARTS",
  MessageKind.EXTERNAL_WITH_BODY: "EXTERNAL_WITH_BODY",
  MessageKind.EXTRA_CATCH_DECLARATION: "EXTRA_CATCH_DECLARATION",
  MessageKind.EXTRA_FORMALS: "EXTRA_FORMALS",
  MessageKind.EXTRANEOUS_MODIFIER: "EXTRANEOUS_MODIFIER",
  MessageKind.EXTRANEOUS_MODIFIER_REPLACE: "EXTRANEOUS_MODIFIER_REPLACE",
  MessageKind.FACTORY_REDIRECTION_IN_NON_FACTORY:
      "FACTORY_REDIRECTION_IN_NON_FACTORY",
  MessageKind.FINAL_FUNCTION_TYPE_PARAMETER: "FINAL_FUNCTION_TYPE_PARAMETER",
  MessageKind.FINAL_WITHOUT_INITIALIZER: "FINAL_WITHOUT_INITIALIZER",
  MessageKind.FORIN_NOT_ASSIGNABLE: "FORIN_NOT_ASSIGNABLE",
  MessageKind.FORMAL_DECLARED_CONST: "FORMAL_DECLARED_CONST",
  MessageKind.FORMAL_DECLARED_STATIC: "FORMAL_DECLARED_STATIC",
  MessageKind.FUNCTION_TYPE_FORMAL_WITH_DEFAULT:
      "FUNCTION_TYPE_FORMAL_WITH_DEFAULT",
  MessageKind.FUNCTION_WITH_INITIALIZER: "FUNCTION_WITH_INITIALIZER",
  MessageKind.GENERIC: "GENERIC",
  MessageKind.GETTER_MISMATCH: "GETTER_MISMATCH",
  MessageKind.GETTER_NOT_FOUND: "GETTER_NOT_FOUND",
  MessageKind.HEX_DIGIT_EXPECTED: "HEX_DIGIT_EXPECTED",
  MessageKind.HIDDEN_HINTS: "HIDDEN_HINTS",
  MessageKind.HIDDEN_IMPLICIT_IMPORT: "HIDDEN_IMPLICIT_IMPORT",
  MessageKind.HIDDEN_IMPORT: "HIDDEN_IMPORT",
  MessageKind.HIDDEN_WARNINGS: "HIDDEN_WARNINGS",
  MessageKind.HIDDEN_WARNINGS_HINTS: "HIDDEN_WARNINGS_HINTS",
  MessageKind.IF_NULL_ASSIGNING_TYPE: "IF_NULL_ASSIGNING_TYPE",
  MessageKind.ILLEGAL_CONST_FIELD_MODIFIER: "ILLEGAL_CONST_FIELD_MODIFIER",
  MessageKind.ILLEGAL_CONSTRUCTOR_MODIFIERS: "ILLEGAL_CONSTRUCTOR_MODIFIERS",
  MessageKind.ILLEGAL_FINAL_METHOD_MODIFIER: "ILLEGAL_FINAL_METHOD_MODIFIER",
  MessageKind.ILLEGAL_MIXIN_APPLICATION_MODIFIERS:
      "ILLEGAL_MIXIN_APPLICATION_MODIFIERS",
  MessageKind.ILLEGAL_MIXIN_CONSTRUCTOR: "ILLEGAL_MIXIN_CONSTRUCTOR",
  MessageKind.ILLEGAL_MIXIN_CYCLE: "ILLEGAL_MIXIN_CYCLE",
  MessageKind.ILLEGAL_MIXIN_OBJECT: "ILLEGAL_MIXIN_OBJECT",
  MessageKind.ILLEGAL_MIXIN_SUPER_USE: "ILLEGAL_MIXIN_SUPER_USE",
  MessageKind.ILLEGAL_MIXIN_SUPERCLASS: "ILLEGAL_MIXIN_SUPERCLASS",
  MessageKind.ILLEGAL_MIXIN_WITH_SUPER: "ILLEGAL_MIXIN_WITH_SUPER",
  MessageKind.ILLEGAL_SETTER_FORMALS: "ILLEGAL_SETTER_FORMALS",
  MessageKind.ILLEGAL_STATIC: "ILLEGAL_STATIC",
  MessageKind.ILLEGAL_SUPER_SEND: "ILLEGAL_SUPER_SEND",
  MessageKind.IMPORT_BEFORE_PARTS: "IMPORT_BEFORE_PARTS",
  MessageKind.IMPORT_EXPERIMENTAL_MIRRORS: "IMPORT_EXPERIMENTAL_MIRRORS",
  MessageKind.IMPORT_PART_OF: "IMPORT_PART_OF",
  MessageKind.IMPORT_PART_OF_HERE: "IMPORT_PART_OF_HERE",
  MessageKind.IMPORTED_HERE: "IMPORTED_HERE",
  MessageKind.INHERIT_GETTER_AND_METHOD: "INHERIT_GETTER_AND_METHOD",
  MessageKind.INHERITED_EXPLICIT_GETTER: "INHERITED_EXPLICIT_GETTER",
  MessageKind.INHERITED_IMPLICIT_GETTER: "INHERITED_IMPLICIT_GETTER",
  MessageKind.INHERITED_METHOD: "INHERITED_METHOD",
  MessageKind.INJECTED_PUBLIC_MEMBER: "INJECTED_PUBLIC_MEMBER",
  MessageKind.INIT_STATIC_FIELD: "INIT_STATIC_FIELD",
  MessageKind.INITIALIZING_FORMAL_NOT_ALLOWED:
      "INITIALIZING_FORMAL_NOT_ALLOWED",
  MessageKind.INSTANCE_STATIC_SAME_NAME: "INSTANCE_STATIC_SAME_NAME",
  MessageKind.INSTANCE_STATIC_SAME_NAME_CONT: "INSTANCE_STATIC_SAME_NAME_CONT",
  MessageKind.INTERNAL_LIBRARY: "INTERNAL_LIBRARY",
  MessageKind.INTERNAL_LIBRARY_FROM: "INTERNAL_LIBRARY_FROM",
  MessageKind.INVALID_ARGUMENT_AFTER_NAMED: "INVALID_ARGUMENT_AFTER_NAMED",
  MessageKind.INVALID_AWAIT: "INVALID_AWAIT",
  MessageKind.INVALID_AWAIT_FOR: "INVALID_AWAIT_FOR",
  MessageKind.INVALID_AWAIT_FOR_IN: "INVALID_AWAIT_FOR_IN",
  MessageKind.INVALID_BREAK: "INVALID_BREAK",
  MessageKind.INVALID_CASE_DEFAULT: "INVALID_CASE_DEFAULT",
  MessageKind.INVALID_CONSTRUCTOR_ARGUMENTS: "INVALID_CONSTRUCTOR_ARGUMENTS",
  MessageKind.INVALID_CONSTRUCTOR_NAME: "INVALID_CONSTRUCTOR_NAME",
  MessageKind.INVALID_CONTINUE: "INVALID_CONTINUE",
  MessageKind.INVALID_FOR_IN: "INVALID_FOR_IN",
  MessageKind.INVALID_INITIALIZER: "INVALID_INITIALIZER",
  MessageKind.INVALID_METADATA: "INVALID_METADATA",
  MessageKind.INVALID_METADATA_GENERIC: "INVALID_METADATA_GENERIC",
  MessageKind.INVALID_OVERRIDDEN_FIELD: "INVALID_OVERRIDDEN_FIELD",
  MessageKind.INVALID_OVERRIDDEN_GETTER: "INVALID_OVERRIDDEN_GETTER",
  MessageKind.INVALID_OVERRIDDEN_METHOD: "INVALID_OVERRIDDEN_METHOD",
  MessageKind.INVALID_OVERRIDDEN_SETTER: "INVALID_OVERRIDDEN_SETTER",
  MessageKind.INVALID_OVERRIDE_FIELD: "INVALID_OVERRIDE_FIELD",
  MessageKind.INVALID_OVERRIDE_FIELD_WITH_GETTER:
      "INVALID_OVERRIDE_FIELD_WITH_GETTER",
  MessageKind.INVALID_OVERRIDE_FIELD_WITH_SETTER:
      "INVALID_OVERRIDE_FIELD_WITH_SETTER",
  MessageKind.INVALID_OVERRIDE_GETTER: "INVALID_OVERRIDE_GETTER",
  MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD:
      "INVALID_OVERRIDE_GETTER_WITH_FIELD",
  MessageKind.INVALID_OVERRIDE_METHOD: "INVALID_OVERRIDE_METHOD",
  MessageKind.INVALID_OVERRIDE_SETTER: "INVALID_OVERRIDE_SETTER",
  MessageKind.INVALID_OVERRIDE_SETTER_WITH_FIELD:
      "INVALID_OVERRIDE_SETTER_WITH_FIELD",
  MessageKind.INVALID_PACKAGE_CONFIG: "INVALID_PACKAGE_CONFIG",
  MessageKind.INVALID_PACKAGE_URI: "INVALID_PACKAGE_URI",
  MessageKind.INVALID_PARAMETER: "INVALID_PARAMETER",
  MessageKind.INVALID_RECEIVER_IN_INITIALIZER:
      "INVALID_RECEIVER_IN_INITIALIZER",
  MessageKind.INVALID_SOURCE_FILE_LOCATION: "INVALID_SOURCE_FILE_LOCATION",
  MessageKind.INVALID_SYMBOL: "INVALID_SYMBOL",
  MessageKind.INVALID_SYNC_MODIFIER: "INVALID_SYNC_MODIFIER",
  MessageKind.INVALID_TYPE_VARIABLE_BOUND: "INVALID_TYPE_VARIABLE_BOUND",
  MessageKind.INVALID_UNNAMED_CONSTRUCTOR_NAME:
      "INVALID_UNNAMED_CONSTRUCTOR_NAME",
  MessageKind.INVALID_URI: "INVALID_URI",
  MessageKind.INVALID_USE_OF_SUPER: "INVALID_USE_OF_SUPER",
  MessageKind.INVALID_YIELD: "INVALID_YIELD",
  MessageKind.JS_INTEROP_CLASS_CANNOT_EXTEND_DART_CLASS:
      "JS_INTEROP_CLASS_CANNOT_EXTEND_DART_CLASS",
  MessageKind.JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER:
      "JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER",
  MessageKind.JS_OBJECT_LITERAL_CONSTRUCTOR_WITH_POSITIONAL_ARGUMENTS:
      "JS_OBJECT_LITERAL_CONSTRUCTOR_WITH_POSITIONAL_ARGUMENTS",
  MessageKind.JS_INTEROP_METHOD_WITH_NAMED_ARGUMENTS:
      "JS_INTEROP_METHOD_WITH_NAMED_ARGUMENTS",
  MessageKind.JS_PLACEHOLDER_CAPTURE: "JS_PLACEHOLDER_CAPTURE",
  MessageKind.LIBRARY_NAME_MISMATCH: "LIBRARY_NAME_MISMATCH",
  MessageKind.LIBRARY_NOT_FOUND: "LIBRARY_NOT_FOUND",
  MessageKind.LIBRARY_NOT_SUPPORTED: "LIBRARY_NOT_SUPPORTED",
  MessageKind.LIBRARY_TAG_MUST_BE_FIRST: "LIBRARY_TAG_MUST_BE_FIRST",
  MessageKind.MAIN_NOT_A_FUNCTION: "MAIN_NOT_A_FUNCTION",
  MessageKind.MAIN_WITH_EXTRA_PARAMETER: "MAIN_WITH_EXTRA_PARAMETER",
  MessageKind.MALFORMED_STRING_LITERAL: "MALFORMED_STRING_LITERAL",
  MessageKind.MEMBER_NOT_FOUND: "MEMBER_NOT_FOUND",
  MessageKind.MEMBER_NOT_STATIC: "MEMBER_NOT_STATIC",
  MessageKind.MEMBER_USES_CLASS_NAME: "MEMBER_USES_CLASS_NAME",
  MessageKind.METHOD_NOT_FOUND: "METHOD_NOT_FOUND",
  MessageKind.MINUS_OPERATOR_BAD_ARITY: "MINUS_OPERATOR_BAD_ARITY",
  MessageKind.MIRROR_BLOAT: "MIRROR_BLOAT",
  MessageKind.MIRROR_IMPORT: "MIRROR_IMPORT",
  MessageKind.MIRROR_IMPORT_NO_USAGE: "MIRROR_IMPORT_NO_USAGE",
  MessageKind.MIRRORS_CANNOT_FIND_IN_ELEMENT: "MIRRORS_CANNOT_FIND_IN_ELEMENT",
  MessageKind.MIRRORS_CANNOT_RESOLVE_IN_CURRENT_LIBRARY:
      "MIRRORS_CANNOT_RESOLVE_IN_CURRENT_LIBRARY",
  MessageKind.MIRRORS_CANNOT_RESOLVE_IN_LIBRARY:
      "MIRRORS_CANNOT_RESOLVE_IN_LIBRARY",
  MessageKind.MIRRORS_EXPECTED_STRING: "MIRRORS_EXPECTED_STRING",
  MessageKind.MIRRORS_EXPECTED_STRING_OR_LIST:
      "MIRRORS_EXPECTED_STRING_OR_LIST",
  MessageKind.MIRRORS_EXPECTED_STRING_OR_TYPE:
      "MIRRORS_EXPECTED_STRING_OR_TYPE",
  MessageKind.MIRRORS_EXPECTED_STRING_TYPE_OR_LIST:
      "MIRRORS_EXPECTED_STRING_TYPE_OR_LIST",
  MessageKind.MIRRORS_LIBRARY_NOT_SUPPORT_BY_BACKEND:
      "MIRRORS_LIBRARY_NOT_SUPPORT_BY_BACKEND",
  MessageKind.MISSING_ARGUMENT: "MISSING_ARGUMENT",
  MessageKind.MISSING_ENUM_CASES: "MISSING_ENUM_CASES",
  MessageKind.MISSING_FACTORY_KEYWORD: "MISSING_FACTORY_KEYWORD",
  MessageKind.MISSING_FORMALS: "MISSING_FORMALS",
  MessageKind.MISSING_LIBRARY_NAME: "MISSING_LIBRARY_NAME",
  MessageKind.MISSING_MAIN: "MISSING_MAIN",
  MessageKind.MISSING_PART_OF_TAG: "MISSING_PART_OF_TAG",
  MessageKind.MISSING_TOKEN_AFTER_THIS: "MISSING_TOKEN_AFTER_THIS",
  MessageKind.MISSING_TOKEN_BEFORE_THIS: "MISSING_TOKEN_BEFORE_THIS",
  MessageKind.MISSING_TYPE_ARGUMENT: "MISSING_TYPE_ARGUMENT",
  MessageKind.MULTI_INHERITANCE: "MULTI_INHERITANCE",
  MessageKind.NAMED_ARGUMENT_NOT_FOUND: "NAMED_ARGUMENT_NOT_FOUND",
  MessageKind.NAMED_FUNCTION_EXPRESSION: "NAMED_FUNCTION_EXPRESSION",
  MessageKind.NAMED_PARAMETER_WITH_EQUALS: "NAMED_PARAMETER_WITH_EQUALS",
  MessageKind.NATIVE_NOT_SUPPORTED: "NATIVE_NOT_SUPPORTED",
  MessageKind.NO_BREAK_TARGET: "NO_BREAK_TARGET",
  MessageKind.NO_CATCH_NOR_FINALLY: "NO_CATCH_NOR_FINALLY",
  MessageKind.NO_COMMON_SUBTYPES: "NO_COMMON_SUBTYPES",
  MessageKind.NO_CONTINUE_TARGET: "NO_CONTINUE_TARGET",
  MessageKind.NO_INSTANCE_AVAILABLE: "NO_INSTANCE_AVAILABLE",
  MessageKind.NO_MATCHING_CONSTRUCTOR: "NO_MATCHING_CONSTRUCTOR",
  MessageKind.NO_MATCHING_CONSTRUCTOR_FOR_IMPLICIT:
      "NO_MATCHING_CONSTRUCTOR_FOR_IMPLICIT",
  MessageKind.NO_STATIC_OVERRIDE: "NO_STATIC_OVERRIDE",
  MessageKind.NO_STATIC_OVERRIDE_CONT: "NO_STATIC_OVERRIDE_CONT",
  MessageKind.NO_SUCH_LIBRARY_MEMBER: "NO_SUCH_LIBRARY_MEMBER",
  MessageKind.NO_SUCH_METHOD_IN_NATIVE: "NO_SUCH_METHOD_IN_NATIVE",
  MessageKind.NO_SUCH_SUPER_MEMBER: "NO_SUCH_SUPER_MEMBER",
  MessageKind.NO_SUPER_IN_STATIC: "NO_SUPER_IN_STATIC",
  MessageKind.NO_THIS_AVAILABLE: "NO_THIS_AVAILABLE",
  MessageKind.NON_CONST_BLOAT: "NON_CONST_BLOAT",
  MessageKind.NOT_A_COMPILE_TIME_CONSTANT: "NOT_A_COMPILE_TIME_CONSTANT",
  MessageKind.NOT_A_FIELD: "NOT_A_FIELD",
  MessageKind.NOT_A_PREFIX: "NOT_A_PREFIX",
  MessageKind.NOT_A_TYPE: "NOT_A_TYPE",
  MessageKind.NOT_ASSIGNABLE: "NOT_ASSIGNABLE",
  MessageKind.NOT_CALLABLE: "NOT_CALLABLE",
  MessageKind.NOT_INSTANCE_FIELD: "NOT_INSTANCE_FIELD",
  MessageKind.NOT_MORE_SPECIFIC: "NOT_MORE_SPECIFIC",
  MessageKind.NOT_MORE_SPECIFIC_SUBTYPE: "NOT_MORE_SPECIFIC_SUBTYPE",
  MessageKind.NOT_MORE_SPECIFIC_SUGGESTION: "NOT_MORE_SPECIFIC_SUGGESTION",
  MessageKind.NULL_NOT_ALLOWED: "NULL_NOT_ALLOWED",
  MessageKind.ONLY_ONE_LIBRARY_TAG: "ONLY_ONE_LIBRARY_TAG",
  MessageKind.OPERATOR_NAMED_PARAMETERS: "OPERATOR_NAMED_PARAMETERS",
  MessageKind.OPERATOR_NOT_FOUND: "OPERATOR_NOT_FOUND",
  MessageKind.OPERATOR_OPTIONAL_PARAMETERS: "OPERATOR_OPTIONAL_PARAMETERS",
  MessageKind.OPTIONAL_PARAMETER_IN_CATCH: "OPTIONAL_PARAMETER_IN_CATCH",
  MessageKind.OVERRIDE_EQUALS_NOT_HASH_CODE: "OVERRIDE_EQUALS_NOT_HASH_CODE",
  MessageKind.PARAMETER_NAME_EXPECTED: "PARAMETER_NAME_EXPECTED",
  MessageKind.PARAMETER_WITH_MODIFIER_IN_CATCH:
      "PARAMETER_WITH_MODIFIER_IN_CATCH",
  MessageKind.PARAMETER_WITH_TYPE_IN_CATCH: "PARAMETER_WITH_TYPE_IN_CATCH",
  MessageKind.PATCH_EXTERNAL_WITHOUT_IMPLEMENTATION:
      "PATCH_EXTERNAL_WITHOUT_IMPLEMENTATION",
  MessageKind.PATCH_NO_GETTER: "PATCH_NO_GETTER",
  MessageKind.PATCH_NO_SETTER: "PATCH_NO_SETTER",
  MessageKind.PATCH_NON_CLASS: "PATCH_NON_CLASS",
  MessageKind.PATCH_NON_CONSTRUCTOR: "PATCH_NON_CONSTRUCTOR",
  MessageKind.PATCH_NON_EXISTING: "PATCH_NON_EXISTING",
  MessageKind.PATCH_NON_EXTERNAL: "PATCH_NON_EXTERNAL",
  MessageKind.PATCH_NON_FUNCTION: "PATCH_NON_FUNCTION",
  MessageKind.PATCH_NON_GETTER: "PATCH_NON_GETTER",
  MessageKind.PATCH_NON_SETTER: "PATCH_NON_SETTER",
  MessageKind.PATCH_NONPATCHABLE: "PATCH_NONPATCHABLE",
  MessageKind.PATCH_OPTIONAL_PARAMETER_COUNT_MISMATCH:
      "PATCH_OPTIONAL_PARAMETER_COUNT_MISMATCH",
  MessageKind.PATCH_OPTIONAL_PARAMETER_NAMED_MISMATCH:
      "PATCH_OPTIONAL_PARAMETER_NAMED_MISMATCH",
  MessageKind.PATCH_PARAMETER_MISMATCH: "PATCH_PARAMETER_MISMATCH",
  MessageKind.PATCH_PARAMETER_TYPE_MISMATCH: "PATCH_PARAMETER_TYPE_MISMATCH",
  MessageKind.PATCH_POINT_TO_CLASS: "PATCH_POINT_TO_CLASS",
  MessageKind.PATCH_POINT_TO_CONSTRUCTOR: "PATCH_POINT_TO_CONSTRUCTOR",
  MessageKind.PATCH_POINT_TO_FUNCTION: "PATCH_POINT_TO_FUNCTION",
  MessageKind.PATCH_POINT_TO_GETTER: "PATCH_POINT_TO_GETTER",
  MessageKind.PATCH_POINT_TO_PARAMETER: "PATCH_POINT_TO_PARAMETER",
  MessageKind.PATCH_POINT_TO_SETTER: "PATCH_POINT_TO_SETTER",
  MessageKind.PATCH_REQUIRED_PARAMETER_COUNT_MISMATCH:
      "PATCH_REQUIRED_PARAMETER_COUNT_MISMATCH",
  MessageKind.PATCH_RETURN_TYPE_MISMATCH: "PATCH_RETURN_TYPE_MISMATCH",
  MessageKind.PLEASE_REPORT_THE_CRASH: "PLEASE_REPORT_THE_CRASH",
  MessageKind.POSITIONAL_PARAMETER_WITH_EQUALS:
      "POSITIONAL_PARAMETER_WITH_EQUALS",
  MessageKind.POTENTIAL_MUTATION: "POTENTIAL_MUTATION",
  MessageKind.POTENTIAL_MUTATION_HERE: "POTENTIAL_MUTATION_HERE",
  MessageKind.POTENTIAL_MUTATION_IN_CLOSURE: "POTENTIAL_MUTATION_IN_CLOSURE",
  MessageKind.POTENTIAL_MUTATION_IN_CLOSURE_HERE:
      "POTENTIAL_MUTATION_IN_CLOSURE_HERE",
  MessageKind.PREAMBLE: "PREAMBLE",
  MessageKind.PREFIX_AS_EXPRESSION: "PREFIX_AS_EXPRESSION",
  MessageKind.PRIVATE_ACCESS: "PRIVATE_ACCESS",
  MessageKind.PRIVATE_IDENTIFIER: "PRIVATE_IDENTIFIER",
  MessageKind.PRIVATE_NAMED_PARAMETER: "PRIVATE_NAMED_PARAMETER",
  MessageKind.READ_SCRIPT_ERROR: "READ_SCRIPT_ERROR",
  MessageKind.READ_SELF_ERROR: "READ_SELF_ERROR",
  MessageKind.REDIRECTING_CONSTRUCTOR_CYCLE: "REDIRECTING_CONSTRUCTOR_CYCLE",
  MessageKind.REDIRECTING_CONSTRUCTOR_HAS_BODY:
      "REDIRECTING_CONSTRUCTOR_HAS_BODY",
  MessageKind.REDIRECTING_CONSTRUCTOR_HAS_INITIALIZER:
      "REDIRECTING_CONSTRUCTOR_HAS_INITIALIZER",
  MessageKind.REDIRECTING_FACTORY_WITH_DEFAULT:
      "REDIRECTING_FACTORY_WITH_DEFAULT",
  MessageKind.REFERENCE_IN_INITIALIZATION: "REFERENCE_IN_INITIALIZATION",
  MessageKind.REQUIRED_PARAMETER_WITH_DEFAULT:
      "REQUIRED_PARAMETER_WITH_DEFAULT",
  MessageKind.RETURN_IN_GENERATOR: "RETURN_IN_GENERATOR",
  MessageKind.RETURN_NOTHING: "RETURN_NOTHING",
  MessageKind.RETURN_VALUE_IN_VOID: "RETURN_VALUE_IN_VOID",
  MessageKind.SETTER_MISMATCH: "SETTER_MISMATCH",
  MessageKind.SETTER_NOT_FOUND: "SETTER_NOT_FOUND",
  MessageKind.SETTER_NOT_FOUND_IN_SUPER: "SETTER_NOT_FOUND_IN_SUPER",
  MessageKind.STATIC_FUNCTION_BLOAT: "STATIC_FUNCTION_BLOAT",
  MessageKind.STRING_EXPECTED: "STRING_EXPECTED",
  MessageKind.SUPER_CALL_TO_FACTORY: "SUPER_CALL_TO_FACTORY",
  MessageKind.SUPER_INITIALIZER_IN_OBJECT: "SUPER_INITIALIZER_IN_OBJECT",
  MessageKind.SWITCH_CASE_FORBIDDEN: "SWITCH_CASE_FORBIDDEN",
  MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL: "SWITCH_CASE_TYPES_NOT_EQUAL",
  MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE:
      "SWITCH_CASE_TYPES_NOT_EQUAL_CASE",
  MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS:
      "SWITCH_CASE_VALUE_OVERRIDES_EQUALS",
  MessageKind.TERNARY_OPERATOR_BAD_ARITY: "TERNARY_OPERATOR_BAD_ARITY",
  MessageKind.THIS_CALL_TO_FACTORY: "THIS_CALL_TO_FACTORY",
  MessageKind.THIS_IS_THE_DECLARATION: "THIS_IS_THE_DECLARATION",
  MessageKind.THIS_IS_THE_METHOD: "THIS_IS_THE_METHOD",
  MessageKind.THIS_IS_THE_PART_OF_TAG: "THIS_IS_THE_PART_OF_TAG",
  MessageKind.THIS_PROPERTY: "THIS_PROPERTY",
  MessageKind.THROW_WITHOUT_EXPRESSION: "THROW_WITHOUT_EXPRESSION",
  MessageKind.TOP_LEVEL_VARIABLE_DECLARED_STATIC:
      "TOP_LEVEL_VARIABLE_DECLARED_STATIC",
  MessageKind.TYPE_ARGUMENT_COUNT_MISMATCH: "TYPE_ARGUMENT_COUNT_MISMATCH",
  MessageKind.TYPE_VARIABLE_IN_CONSTANT: "TYPE_VARIABLE_IN_CONSTANT",
  MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER:
      "TYPE_VARIABLE_WITHIN_STATIC_MEMBER",
  MessageKind.TYPEDEF_FORMAL_WITH_DEFAULT: "TYPEDEF_FORMAL_WITH_DEFAULT",
  MessageKind.UNARY_OPERATOR_BAD_ARITY: "UNARY_OPERATOR_BAD_ARITY",
  MessageKind.UNBOUND_LABEL: "UNBOUND_LABEL",
  MessageKind.UNIMPLEMENTED_EXPLICIT_GETTER: "UNIMPLEMENTED_EXPLICIT_GETTER",
  MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER: "UNIMPLEMENTED_EXPLICIT_SETTER",
  MessageKind.UNIMPLEMENTED_GETTER: "UNIMPLEMENTED_GETTER",
  MessageKind.UNIMPLEMENTED_GETTER_ONE: "UNIMPLEMENTED_GETTER_ONE",
  MessageKind.UNIMPLEMENTED_IMPLICIT_GETTER: "UNIMPLEMENTED_IMPLICIT_GETTER",
  MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER: "UNIMPLEMENTED_IMPLICIT_SETTER",
  MessageKind.UNIMPLEMENTED_METHOD: "UNIMPLEMENTED_METHOD",
  MessageKind.UNIMPLEMENTED_METHOD_CONT: "UNIMPLEMENTED_METHOD_CONT",
  MessageKind.UNIMPLEMENTED_METHOD_ONE: "UNIMPLEMENTED_METHOD_ONE",
  MessageKind.UNIMPLEMENTED_SETTER: "UNIMPLEMENTED_SETTER",
  MessageKind.UNIMPLEMENTED_SETTER_ONE: "UNIMPLEMENTED_SETTER_ONE",
  MessageKind.UNMATCHED_TOKEN: "UNMATCHED_TOKEN",
  MessageKind.UNRECOGNIZED_VERSION_OF_LOOKUP_MAP:
      "UNRECOGNIZED_VERSION_OF_LOOKUP_MAP",
  MessageKind.UNSUPPORTED_BANG_EQ_EQ: "UNSUPPORTED_BANG_EQ_EQ",
  MessageKind.UNSUPPORTED_EQ_EQ_EQ: "UNSUPPORTED_EQ_EQ_EQ",
  MessageKind.UNSUPPORTED_LITERAL_SYMBOL: "UNSUPPORTED_LITERAL_SYMBOL",
  MessageKind.UNSUPPORTED_PREFIX_PLUS: "UNSUPPORTED_PREFIX_PLUS",
  MessageKind.UNSUPPORTED_THROW_WITHOUT_EXP: "UNSUPPORTED_THROW_WITHOUT_EXP",
  MessageKind.UNTERMINATED_COMMENT: "UNTERMINATED_COMMENT",
  MessageKind.UNTERMINATED_STRING: "UNTERMINATED_STRING",
  MessageKind.UNTERMINATED_TOKEN: "UNTERMINATED_TOKEN",
  MessageKind.UNUSED_CLASS: "UNUSED_CLASS",
  MessageKind.UNUSED_LABEL: "UNUSED_LABEL",
  MessageKind.UNUSED_METHOD: "UNUSED_METHOD",
  MessageKind.UNUSED_TYPEDEF: "UNUSED_TYPEDEF",
  MessageKind.VAR_FUNCTION_TYPE_PARAMETER: "VAR_FUNCTION_TYPE_PARAMETER",
  MessageKind.VOID_EXPRESSION: "VOID_EXPRESSION",
  MessageKind.VOID_NOT_ALLOWED: "VOID_NOT_ALLOWED",
  MessageKind.VOID_VARIABLE: "VOID_VARIABLE",
  MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT:
      "WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT",
  MessageKind.WRONG_NUMBER_OF_ARGUMENTS_FOR_ASSERT:
      "WRONG_NUMBER_OF_ARGUMENTS_FOR_ASSERT",
  MessageKind.YIELDING_MODIFIER_ON_ARROW_BODY:
      "YIELDING_MODIFIER_ON_ARROW_BODY",
};

/// A message template for an error, warning, hint or info message generated
/// by the compiler. Each template is associated with a [MessageKind] that
/// uniquely identifies the message template.
// TODO(johnnniwinther): For Infos, consider adding a reference to the
// error/warning/hint that they belong to.
class MessageTemplate {
  final MessageKind kind;

  final String id;

  /// Should describe what is wrong and why.
  final String template;

  /// Should describe how to fix the problem. Elided when using --terse option.
  final String howToFix;

  /**
   *  Examples will be checked by
   *  tests/compiler/dart2js/message_kind_test.dart.
   *
   *  An example is either a String containing the example source code or a Map
   *  from filenames to source code. In the latter case, the filename for the
   *  main library code must be 'main.dart'.
   */
  final List examples;

  /// Additional options needed for the examples to work.
  final List<String> options;

  const MessageTemplate(this.kind, this.id, this.template, this.howToFix,
      this.examples, this.options);

  toString() => template;

  Message message([Map arguments = const {}, bool terse = false]) {
    return new Message(this, arguments, terse);
  }

  bool get hasHowToFix =>
      howToFix != null && howToFix != dart2js_messages.DONT_KNOW_HOW_TO_FIX;

  static final Map<MessageKind, MessageTemplate> TEMPLATES =
      _constructMessageTemplates();

  static String get IMPORT_EXPERIMENTAL_MIRRORS_PADDING =>
      dart2js_messages.IMPORT_EXPERIMENTAL_MIRRORS_PADDING;

  static String get MIRRORS_NOT_SUPPORTED_BY_BACKEND_PADDING =>
      dart2js_messages.MIRRORS_NOT_SUPPORTED_BY_BACKEND_PADDING;

  static String get DISALLOWED_LIBRARY_IMPORT_PADDING =>
      dart2js_messages.DISALLOWED_LIBRARY_IMPORT_PADDING;

  static Map<MessageKind, MessageTemplate> _constructMessageTemplates() {
    Map<MessageKind, MessageTemplate> result = <MessageKind, MessageTemplate>{};
    for (MessageKind kind in MessageKind.values) {
      String name = _KIND_TO_STRING_MAP[kind];
      if (name == null) {
        throw new ArgumentError("No mapping for $kind in _KIND_TO_STRING_MAP");
      }
      Map data =
          shared_messages.MESSAGES[name] ?? dart2js_messages.MESSAGES[name];
      if (data == null) throw new ArgumentError.value(name);

      String id = data['id'];
      String template = data['template'];
      String howToFix = data['howToFix'];
      List examples = data['examples'];
      List<String> options = data['options'] ?? const <String>[];
      result[kind] =
          new MessageTemplate(kind, id, template, howToFix, examples, options);
    }
    return result;
  }
}

class Message {
  final MessageTemplate template;
  final Map arguments;
  final bool terse;
  String message;

  Message(this.template, this.arguments, this.terse) {
    assert(() {
      computeMessage();
      return true;
    });
  }

  MessageKind get kind => template.kind;

  String computeMessage() {
    if (message == null) {
      message = template.template;
      arguments.forEach((key, value) {
        message = message.replaceAll('#{${key}}', convertToString(value));
      });
      assert(invariant(
          CURRENT_ELEMENT_SPANNABLE,
          kind == MessageKind.GENERIC ||
              !message.contains(new RegExp(r'#\{.+\}')),
          message: 'Missing arguments in error message: "$message"'));
      if (!terse && template.hasHowToFix) {
        String howToFix = template.howToFix;
        arguments.forEach((key, value) {
          howToFix = howToFix.replaceAll('#{${key}}', convertToString(value));
        });
        message = '$message\n$howToFix';
      }
    }
    return message;
  }

  String toString() {
    return computeMessage();
  }

  bool operator ==(other) {
    if (other is! Message) return false;
    return (template == other.template) && (toString() == other.toString());
  }

  int get hashCode => throw new UnsupportedError('Message.hashCode');

  static String convertToString(value) {
    if (value is ErrorToken) {
      // Shouldn't happen.
      return value.assertionMessage;
    } else if (value is Token) {
      value = value.value;
    }
    return '$value';
  }
}
