// Copyright (c) 2014, 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 analyzer.error.error; import 'dart:collection'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/src/dart/scanner/scanner.dart' show ScannerErrorCode; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/generated/java_core.dart'; import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode; import 'package:analyzer/src/generated/source.dart'; /** * An error discovered during the analysis of some Dart code. * * See [AnalysisErrorListener]. */ class AnalysisError { /** * An empty array of errors used when no errors are expected. */ static const List NO_ERRORS = const []; /** * A [Comparator] that sorts by the name of the file that the [AnalysisError] * was found. */ static Comparator FILE_COMPARATOR = (AnalysisError o1, AnalysisError o2) => o1.source.shortName.compareTo(o2.source.shortName); /** * A [Comparator] that sorts error codes first by their severity (errors * first, warnings second), and then by the error code type. */ static Comparator ERROR_CODE_COMPARATOR = (AnalysisError o1, AnalysisError o2) { ErrorCode errorCode1 = o1.errorCode; ErrorCode errorCode2 = o2.errorCode; ErrorSeverity errorSeverity1 = errorCode1.errorSeverity; ErrorSeverity errorSeverity2 = errorCode2.errorSeverity; if (errorSeverity1 == errorSeverity2) { ErrorType errorType1 = errorCode1.type; ErrorType errorType2 = errorCode2.type; return errorType1.compareTo(errorType2); } else { return errorSeverity2.compareTo(errorSeverity1); } }; /** * The error code associated with the error. */ final ErrorCode errorCode; /** * The localized error message. */ String _message; /** * The correction to be displayed for this error, or `null` if there is no * correction information for this error. */ String _correction; /** * The source in which the error occurred, or `null` if unknown. */ final Source source; /** * The character offset from the beginning of the source (zero based) where * the error occurred. */ int offset = 0; /** * The number of characters from the offset to the end of the source which * encompasses the compilation error. */ int length = 0; /** * A flag indicating whether this error can be shown to be a non-issue because * of the result of type propagation. */ bool isStaticOnly = false; /** * Initialize a newly created analysis error. The error is associated with the * given [source] and is located at the given [offset] with the given * [length]. The error will have the given [errorCode] and the list of * [arguments] will be used to complete the message. */ AnalysisError(this.source, this.offset, this.length, this.errorCode, [List arguments]) { this._message = formatList(errorCode.message, arguments); String correctionTemplate = errorCode.correction; if (correctionTemplate != null) { this._correction = formatList(correctionTemplate, arguments); } } /** * Initialize a newly created analysis error with given values. */ AnalysisError.forValues(this.source, this.offset, this.length, this.errorCode, this._message, this._correction); /** * Return the template used to create the correction to be displayed for this * error, or `null` if there is no correction information for this error. The * correction should indicate how the user can fix the error. */ String get correction => _correction; @override int get hashCode { int hashCode = offset; hashCode ^= (_message != null) ? _message.hashCode : 0; hashCode ^= (source != null) ? source.hashCode : 0; return hashCode; } /** * Return the message to be displayed for this error. The message should * indicate what is wrong and why it is wrong. */ String get message => _message; @override bool operator ==(Object other) { if (identical(other, this)) { return true; } // prepare other AnalysisError if (other is AnalysisError) { // Quick checks. if (!identical(errorCode, other.errorCode)) { return false; } if (offset != other.offset || length != other.length) { return false; } if (isStaticOnly != other.isStaticOnly) { return false; } // Deep checks. if (_message != other._message) { return false; } if (source != other.source) { return false; } // OK return true; } return false; } /** * Return the value of the given [property], or `null` if the given property * is not defined for this error. */ Object/*=V*/ getProperty/**/(ErrorProperty/**/ property) => null; @override String toString() { StringBuffer buffer = new StringBuffer(); buffer.write((source != null) ? source.fullName : ""); buffer.write("("); buffer.write(offset); buffer.write(".."); buffer.write(offset + length - 1); buffer.write("): "); //buffer.write("(" + lineNumber + ":" + columnNumber + "): "); buffer.write(_message); return buffer.toString(); } /** * Merge all of the errors in the lists in the given list of [errorLists] into * a single list of errors. */ static List mergeLists(List> errorLists) { Set errors = new HashSet(); for (List errorList in errorLists) { errors.addAll(errorList); } return errors.toList(); } } /** * An [AnalysisError] that can have arbitrary properties associated with it. */ class AnalysisErrorWithProperties extends AnalysisError { /** * The properties associated with this error. */ HashMap _propertyMap = new HashMap(); /** * Initialize a newly created analysis error. The error is associated with the * given [source] and is located at the given [offset] with the given * [length]. The error will have the given [errorCode] and the list of * [arguments] will be used to complete the message. */ AnalysisErrorWithProperties( Source source, int offset, int length, ErrorCode errorCode, [List arguments]) : super(source, offset, length, errorCode, arguments); @override Object/*=V*/ getProperty/**/(ErrorProperty/**/ property) => _propertyMap[property] as Object/*=V*/; /** * Set the value of the given [property] to the given [value]. Using a value * of `null` will effectively remove the property from this error. */ void setProperty/**/(ErrorProperty/**/ property, Object/*=V*/ value) { _propertyMap[property] = value; } } /** * An error code associated with an [AnalysisError]. * * Generally, we want to provide messages that consist of three sentences. From * the user's perspective these sentences should explain: * 1. what is wrong, * 2. why is it wrong, and * 3. how do I fix it. * However, we combine the first two in the [message] and the last in the * [correction]. */ abstract class ErrorCode { /** * Engine error code values. */ static const List values = const [ // // Manually generated. FWIW, this get's you most of the way there: // // > grep 'static const .*Code' (error.dart|parser|scanner.dart) // | awk '{print $3"."$4","}' // // error.dart: // AnalysisOptionsErrorCode.PARSE_ERROR, AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUES, AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUE, AnalysisOptionsWarningCode.UNSUPPORTED_VALUE, AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE, CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH, CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, CheckedModeCompileTimeErrorCode.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE, CheckedModeCompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, CheckedModeCompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, CheckedModeCompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, CheckedModeCompileTimeErrorCode.VARIABLE_TYPE_MISMATCH, CompileTimeErrorCode.ACCESS_PRIVATE_ENUM_FIELD, CompileTimeErrorCode.AMBIGUOUS_EXPORT, CompileTimeErrorCode.ANNOTATION_WITH_NON_CLASS, CompileTimeErrorCode.ARGUMENT_DEFINITION_TEST_NON_PARAMETER, CompileTimeErrorCode.ASYNC_FOR_IN_WRONG_CONTEXT, CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME, CompileTimeErrorCode.CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS, CompileTimeErrorCode.COMPILE_TIME_CONSTANT_RAISES_EXCEPTION, CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD, CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER, CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD, CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD, CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS, CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER, CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION, CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST, CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN, CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER, CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD, CompileTimeErrorCode.CONST_DEFERRED_CLASS, CompileTimeErrorCode.CONST_FORMAL_PARAMETER, CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, CompileTimeErrorCode .CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.CONST_INSTANCE_FIELD, CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS, CompileTimeErrorCode.CONST_NOT_INITIALIZED, CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL, CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING, CompileTimeErrorCode.CONST_EVAL_TYPE_INT, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM, CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, CompileTimeErrorCode.CONST_EVAL_THROWS_IDBZE, CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETERS, CompileTimeErrorCode.CONST_WITH_NON_CONST, CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT, CompileTimeErrorCode.CONST_WITH_NON_TYPE, CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR, CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT, CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS, CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER, CompileTimeErrorCode.DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR, CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_DEFAULT, CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_NAME, CompileTimeErrorCode.DUPLICATE_DEFINITION, CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE, CompileTimeErrorCode.DUPLICATE_NAMED_ARGUMENT, CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY, CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY, CompileTimeErrorCode.EXTENDS_ENUM, CompileTimeErrorCode.EXTENDS_NON_CLASS, CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS, CompileTimeErrorCode.EXTRA_ARGUMENT_TO_ASSERT, CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS, CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS, CompileTimeErrorCode.FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER, CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES, CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR, CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR, CompileTimeErrorCode.GETTER_AND_METHOD_WITH_SAME_NAME, CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS, CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS, CompileTimeErrorCode.IMPLEMENTS_DYNAMIC, CompileTimeErrorCode.IMPLEMENTS_ENUM, CompileTimeErrorCode.IMPLEMENTS_NON_CLASS, CompileTimeErrorCode.IMPLEMENTS_REPEATED, CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS, CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER, CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY, CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES, CompileTimeErrorCode.INITIALIZER_FOR_NON_EXISTENT_FIELD, CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD, CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD, CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_FACTORY, CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC, CompileTimeErrorCode.INSTANTIATE_ENUM, CompileTimeErrorCode.INVALID_ANNOTATION, CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC, CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR, CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER, CompileTimeErrorCode.INVALID_CONSTANT, CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME, CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS, CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_LIST, CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_MAP, CompileTimeErrorCode.INVALID_URI, CompileTimeErrorCode.LABEL_IN_OUTER_SCOPE, CompileTimeErrorCode.LABEL_UNDEFINED, CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME, CompileTimeErrorCode.METHOD_AND_GETTER_WITH_SAME_NAME, CompileTimeErrorCode.MISSING_CONST_IN_LIST_LITERAL, CompileTimeErrorCode.MISSING_CONST_IN_MAP_LITERAL, CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR, CompileTimeErrorCode.MIXIN_DEFERRED_CLASS, CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS, CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT, CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS, CompileTimeErrorCode.MIXIN_OF_ENUM, CompileTimeErrorCode.MIXIN_OF_NON_CLASS, CompileTimeErrorCode.MIXIN_REFERENCES_SUPER, CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS, CompileTimeErrorCode.MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS, CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS, CompileTimeErrorCode.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS, CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT, CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATEMENT, CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION, CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE, CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.NON_CONSTANT_ANNOTATION_CONSTRUCTOR, CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER, CompileTimeErrorCode .NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY, CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS, CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR, CompileTimeErrorCode.OBJECT_CANNOT_EXTEND_ANOTHER_CLASS, CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR, CompileTimeErrorCode.PART_OF_NON_PART, CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER, CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT, CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT, CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT, CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS, CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS, CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_WITH, CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR, CompileTimeErrorCode.REDIRECT_TO_NON_CLASS, CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR, CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR, CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR, CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, CompileTimeErrorCode.RETHROW_OUTSIDE_CATCH, CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR, CompileTimeErrorCode.RETURN_IN_GENERATOR, CompileTimeErrorCode.SHARED_DEFERRED_PREFIX, CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT, CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR, CompileTimeErrorCode.SUPER_INITIALIZER_IN_OBJECT, CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, CompileTimeErrorCode.UNDEFINED_CLASS, CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER, CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER, CompileTimeErrorCode.URI_DOES_NOT_EXIST, CompileTimeErrorCode.URI_WITH_INTERPOLATION, CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR, CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS, CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER, CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR, CompileTimeErrorCode.YIELD_IN_NON_GENERATOR, HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, HintCode.CAN_BE_NULL_AFTER_NULL_AWARE, HintCode.DEAD_CODE, HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH, HintCode.DEAD_CODE_ON_CATCH_SUBTYPE, HintCode.DEPRECATED_MEMBER_USE, HintCode.DUPLICATE_IMPORT, HintCode.DIVISION_OPTIMIZATION, HintCode.INVALID_FACTORY_ANNOTATION, HintCode.INVALID_FACTORY_METHOD_DECL, HintCode.INVALID_FACTORY_METHOD_IMPL, HintCode.IS_DOUBLE, HintCode.IS_INT, HintCode.IS_NOT_DOUBLE, HintCode.IS_NOT_INT, HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION, HintCode.INVALID_ASSIGNMENT, HintCode.INVALID_USE_OF_PROTECTED_MEMBER, HintCode.MISSING_JS_LIB_ANNOTATION, HintCode.MISSING_REQUIRED_PARAM, HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS, HintCode.MISSING_RETURN, HintCode.NULL_AWARE_IN_CONDITION, HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER, HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD, HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD, HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER, HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE, HintCode.TYPE_CHECK_IS_NOT_NULL, HintCode.TYPE_CHECK_IS_NULL, HintCode.UNDEFINED_GETTER, HintCode.UNDEFINED_HIDDEN_NAME, HintCode.UNDEFINED_METHOD, HintCode.UNDEFINED_OPERATOR, HintCode.UNDEFINED_SETTER, HintCode.UNDEFINED_SHOWN_NAME, HintCode.UNNECESSARY_CAST, HintCode.UNNECESSARY_NO_SUCH_METHOD, HintCode.UNNECESSARY_TYPE_CHECK_FALSE, HintCode.UNNECESSARY_TYPE_CHECK_TRUE, HintCode.UNUSED_ELEMENT, HintCode.UNUSED_FIELD, HintCode.UNUSED_IMPORT, HintCode.UNUSED_CATCH_CLAUSE, HintCode.UNUSED_CATCH_STACK, HintCode.UNUSED_LOCAL_VARIABLE, HintCode.UNUSED_SHOWN_NAME, HintCode.USE_OF_VOID_RESULT, HintCode.FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE, HintCode.FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE, HintCode.PACKAGE_IMPORT_CONTAINS_DOT_DOT, HtmlErrorCode.PARSE_ERROR, HtmlWarningCode.INVALID_URI, HtmlWarningCode.URI_DOES_NOT_EXIST, StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS, StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS, StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE, StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE, StaticTypeWarningCode.INACCESSIBLE_SETTER, StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE, StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER, StaticTypeWarningCode.INVALID_ASSIGNMENT, StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, StaticTypeWarningCode.NON_BOOL_CONDITION, StaticTypeWarningCode.NON_BOOL_EXPRESSION, StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION, StaticTypeWarningCode.NON_BOOL_OPERAND, StaticTypeWarningCode.NON_NULLABLE_FIELD_NOT_INITIALIZED, StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS, StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND, StaticTypeWarningCode.UNDEFINED_ENUM_CONSTANT, StaticTypeWarningCode.UNDEFINED_FUNCTION, StaticTypeWarningCode.UNDEFINED_GETTER, StaticTypeWarningCode.UNDEFINED_METHOD, StaticTypeWarningCode.UNDEFINED_METHOD_WITH_CONSTRUCTOR, StaticTypeWarningCode.UNDEFINED_OPERATOR, StaticTypeWarningCode.UNDEFINED_SETTER, StaticTypeWarningCode.UNDEFINED_SUPER_GETTER, StaticTypeWarningCode.UNDEFINED_SUPER_METHOD, StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR, StaticTypeWarningCode.UNDEFINED_SUPER_SETTER, StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER, StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, StaticTypeWarningCode.YIELD_OF_INVALID_TYPE, StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE, StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, StaticWarningCode.AMBIGUOUS_IMPORT, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, StaticWarningCode.ASSIGNMENT_TO_CONST, StaticWarningCode.ASSIGNMENT_TO_FINAL, StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER, StaticWarningCode.ASSIGNMENT_TO_FUNCTION, StaticWarningCode.ASSIGNMENT_TO_METHOD, StaticWarningCode.ASSIGNMENT_TO_TYPE, StaticWarningCode.CASE_BLOCK_NOT_TERMINATED, StaticWarningCode.CAST_TO_NON_TYPE, StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, StaticWarningCode.CONFLICTING_DART_IMPORT, StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER, StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER, StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2, StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER, StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER, StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER, StaticWarningCode.CONST_WITH_ABSTRACT_CLASS, StaticWarningCode.EQUAL_KEYS_IN_MAP, StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAMED, StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS, StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION, StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE, StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE, StaticWarningCode.FINAL_NOT_INITIALIZED, StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1, StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2, StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS, StaticWarningCode.FUNCTION_WITHOUT_CALL, StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED, StaticWarningCode.IMPORT_OF_NON_LIBRARY, StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD, StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC, StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE, StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE, StaticWarningCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETERS, StaticWarningCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETER_BOUND, StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE, StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE, StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE, StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED, StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL, StaticWarningCode.INVALID_OVERRIDE_NAMED, StaticWarningCode.INVALID_OVERRIDE_POSITIONAL, StaticWarningCode.INVALID_OVERRIDE_REQUIRED, StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE, StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE, StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE, StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES, StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE, StaticWarningCode.MIXED_RETURN_TYPES, StaticWarningCode.NEW_WITH_ABSTRACT_CLASS, StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS, StaticWarningCode.NEW_WITH_NON_TYPE, StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR, StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT, StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS, StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR, StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE, StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE, StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO, StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR, StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, StaticWarningCode.NOT_A_TYPE, StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY, StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE, StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE, StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR, StaticWarningCode.REDIRECT_TO_NON_CLASS, StaticWarningCode.RETURN_WITHOUT_VALUE, StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE, StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, StaticWarningCode.TYPE_TEST_WITH_NON_TYPE, StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME, StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, StaticWarningCode.UNDEFINED_CLASS, StaticWarningCode.UNDEFINED_CLASS_BOOLEAN, StaticWarningCode.UNDEFINED_GETTER, StaticWarningCode.UNDEFINED_IDENTIFIER, StaticWarningCode.UNDEFINED_NAMED_PARAMETER, StaticWarningCode.UNDEFINED_SETTER, StaticWarningCode.UNDEFINED_STATIC_METHOD_OR_GETTER, StaticWarningCode.UNDEFINED_SUPER_GETTER, StaticWarningCode.UNDEFINED_SUPER_SETTER, StaticWarningCode.VOID_RETURN_FOR_GETTER, StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH, StrongModeCode.ASSIGNMENT_CAST, StrongModeCode.DOWN_CAST_COMPOSITE, StrongModeCode.DOWN_CAST_IMPLICIT, StrongModeCode.DYNAMIC_CAST, StrongModeCode.DYNAMIC_INVOKE, StrongModeCode.IMPLICIT_DYNAMIC_FIELD, StrongModeCode.IMPLICIT_DYNAMIC_FUNCTION, StrongModeCode.IMPLICIT_DYNAMIC_INVOKE, StrongModeCode.IMPLICIT_DYNAMIC_LIST_LITERAL, StrongModeCode.IMPLICIT_DYNAMIC_MAP_LITERAL, StrongModeCode.IMPLICIT_DYNAMIC_METHOD, StrongModeCode.IMPLICIT_DYNAMIC_PARAMETER, StrongModeCode.IMPLICIT_DYNAMIC_RETURN, StrongModeCode.IMPLICIT_DYNAMIC_TYPE, StrongModeCode.IMPLICIT_DYNAMIC_VARIABLE, StrongModeCode.INFERRED_TYPE, StrongModeCode.INFERRED_TYPE_ALLOCATION, StrongModeCode.INFERRED_TYPE_CLOSURE, StrongModeCode.INFERRED_TYPE_LITERAL, StrongModeCode.INVALID_FIELD_OVERRIDE, StrongModeCode.INVALID_METHOD_OVERRIDE, StrongModeCode.INVALID_METHOD_OVERRIDE_FROM_BASE, StrongModeCode.INVALID_METHOD_OVERRIDE_FROM_MIXIN, StrongModeCode.INVALID_PARAMETER_DECLARATION, StrongModeCode.INVALID_SUPER_INVOCATION, StrongModeCode.NON_GROUND_TYPE_CHECK_INFO, StrongModeCode.STATIC_TYPE_ERROR, StrongModeCode.UNSAFE_BLOCK_CLOSURE_INFERENCE, TodoCode.TODO, // // parser.dart: // ParserErrorCode.ABSTRACT_CLASS_MEMBER, ParserErrorCode.ABSTRACT_ENUM, ParserErrorCode.ABSTRACT_STATIC_METHOD, ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION, ParserErrorCode.ABSTRACT_TOP_LEVEL_VARIABLE, ParserErrorCode.ABSTRACT_TYPEDEF, ParserErrorCode.ANNOTATION_ON_ENUM_CONSTANT, ParserErrorCode.ASYNC_KEYWORD_USED_AS_IDENTIFIER, ParserErrorCode.ASYNC_NOT_SUPPORTED, ParserErrorCode.BREAK_OUTSIDE_OF_LOOP, ParserErrorCode.CLASS_IN_CLASS, ParserErrorCode.COLON_IN_PLACE_OF_IN, ParserErrorCode.CONST_AND_FINAL, ParserErrorCode.CONST_AND_VAR, ParserErrorCode.CONST_CLASS, ParserErrorCode.CONST_CONSTRUCTOR_WITH_BODY, ParserErrorCode.CONST_ENUM, ParserErrorCode.CONST_FACTORY, ParserErrorCode.CONST_METHOD, ParserErrorCode.CONST_TYPEDEF, ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE, ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE, ParserErrorCode.DEPRECATED_CLASS_TYPE_ALIAS, ParserErrorCode.DIRECTIVE_AFTER_DECLARATION, ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT, ParserErrorCode.DUPLICATED_MODIFIER, ParserErrorCode.EMPTY_ENUM_BODY, ParserErrorCode.ENUM_IN_CLASS, ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND, ParserErrorCode.EXPECTED_CASE_OR_DEFAULT, ParserErrorCode.EXPECTED_CLASS_MEMBER, ParserErrorCode.EXPECTED_EXECUTABLE, ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL, ParserErrorCode.EXPECTED_STRING_LITERAL, ParserErrorCode.EXPECTED_TOKEN, ParserErrorCode.EXPECTED_TYPE_NAME, ParserErrorCode.EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE, ParserErrorCode.EXTERNAL_AFTER_CONST, ParserErrorCode.EXTERNAL_AFTER_FACTORY, ParserErrorCode.EXTERNAL_AFTER_STATIC, ParserErrorCode.EXTERNAL_CLASS, ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY, ParserErrorCode.EXTERNAL_ENUM, ParserErrorCode.EXTERNAL_FIELD, ParserErrorCode.EXTERNAL_GETTER_WITH_BODY, ParserErrorCode.EXTERNAL_METHOD_WITH_BODY, ParserErrorCode.EXTERNAL_OPERATOR_WITH_BODY, ParserErrorCode.EXTERNAL_SETTER_WITH_BODY, ParserErrorCode.EXTERNAL_TYPEDEF, ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION, ParserErrorCode.FACTORY_WITH_INITIALIZERS, ParserErrorCode.FACTORY_WITHOUT_BODY, ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, ParserErrorCode.FINAL_AND_VAR, ParserErrorCode.FINAL_CLASS, ParserErrorCode.FINAL_CONSTRUCTOR, ParserErrorCode.FINAL_ENUM, ParserErrorCode.FINAL_METHOD, ParserErrorCode.FINAL_TYPEDEF, ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR, ParserErrorCode.GETTER_IN_FUNCTION, ParserErrorCode.GETTER_WITH_PARAMETERS, ParserErrorCode.ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE, ParserErrorCode.IMPLEMENTS_BEFORE_EXTENDS, ParserErrorCode.IMPLEMENTS_BEFORE_WITH, ParserErrorCode.IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE, ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH, ParserErrorCode.INVALID_AWAIT_IN_FOR, ParserErrorCode.INVALID_CODE_POINT, ParserErrorCode.INVALID_COMMENT_REFERENCE, ParserErrorCode.INVALID_HEX_ESCAPE, ParserErrorCode.INVALID_LITERAL_IN_CONFIGURATION, ParserErrorCode.INVALID_OPERATOR, ParserErrorCode.INVALID_OPERATOR_FOR_SUPER, ParserErrorCode.INVALID_STAR_AFTER_ASYNC, ParserErrorCode.INVALID_SYNC, ParserErrorCode.INVALID_UNICODE_ESCAPE, ParserErrorCode.LIBRARY_DIRECTIVE_NOT_FIRST, ParserErrorCode.LOCAL_FUNCTION_DECLARATION_MODIFIER, ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER, ParserErrorCode.MISSING_CATCH_OR_FINALLY, ParserErrorCode.MISSING_CLASS_BODY, ParserErrorCode.MISSING_CLOSING_PARENTHESIS, ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, ParserErrorCode.MISSING_ENUM_BODY, ParserErrorCode.MISSING_EXPRESSION_IN_INITIALIZER, ParserErrorCode.MISSING_EXPRESSION_IN_THROW, ParserErrorCode.MISSING_FUNCTION_BODY, ParserErrorCode.MISSING_FUNCTION_PARAMETERS, ParserErrorCode.MISSING_METHOD_PARAMETERS, ParserErrorCode.MISSING_GET, ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.MISSING_INITIALIZER, ParserErrorCode.MISSING_KEYWORD_OPERATOR, ParserErrorCode.MISSING_NAME_IN_LIBRARY_DIRECTIVE, ParserErrorCode.MISSING_NAME_IN_PART_OF_DIRECTIVE, ParserErrorCode.MISSING_PREFIX_IN_DEFERRED_IMPORT, ParserErrorCode.MISSING_STAR_AFTER_SYNC, ParserErrorCode.MISSING_STATEMENT, ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP, ParserErrorCode.MISSING_TYPEDEF_PARAMETERS, ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH, ParserErrorCode.MIXED_PARAMETER_GROUPS, ParserErrorCode.MULTIPLE_EXTENDS_CLAUSES, ParserErrorCode.MULTIPLE_IMPLEMENTS_CLAUSES, ParserErrorCode.MULTIPLE_LIBRARY_DIRECTIVES, ParserErrorCode.MULTIPLE_NAMED_PARAMETER_GROUPS, ParserErrorCode.MULTIPLE_PART_OF_DIRECTIVES, ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS, ParserErrorCode.MULTIPLE_VARIABLES_IN_FOR_EACH, ParserErrorCode.MULTIPLE_WITH_CLAUSES, ParserErrorCode.NAMED_FUNCTION_EXPRESSION, ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE, ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE, ParserErrorCode.NON_CONSTRUCTOR_FACTORY, ParserErrorCode.NON_IDENTIFIER_LIBRARY_NAME, ParserErrorCode.NON_PART_OF_DIRECTIVE_IN_PART, ParserErrorCode.NON_STRING_LITERAL_AS_URI, ParserErrorCode.NON_USER_DEFINABLE_OPERATOR, ParserErrorCode.NORMAL_BEFORE_OPTIONAL_PARAMETERS, ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT, ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP, ParserErrorCode.REDIRECTING_CONSTRUCTOR_WITH_BODY, ParserErrorCode.REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR, ParserErrorCode.SETTER_IN_FUNCTION, ParserErrorCode.STATIC_AFTER_CONST, ParserErrorCode.STATIC_AFTER_FINAL, ParserErrorCode.STATIC_AFTER_VAR, ParserErrorCode.STATIC_CONSTRUCTOR, ParserErrorCode.STATIC_GETTER_WITHOUT_BODY, ParserErrorCode.STATIC_OPERATOR, ParserErrorCode.STATIC_SETTER_WITHOUT_BODY, ParserErrorCode.STATIC_TOP_LEVEL_DECLARATION, ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, ParserErrorCode.TOP_LEVEL_OPERATOR, ParserErrorCode.TYPEDEF_IN_CLASS, ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP, ParserErrorCode.UNEXPECTED_TOKEN, ParserErrorCode.WITH_BEFORE_EXTENDS, ParserErrorCode.WITH_WITHOUT_EXTENDS, ParserErrorCode.WRONG_SEPARATOR_FOR_NAMED_PARAMETER, ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER, ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP, ParserErrorCode.VAR_AND_TYPE, ParserErrorCode.VAR_AS_TYPE_NAME, ParserErrorCode.VAR_CLASS, ParserErrorCode.VAR_ENUM, ParserErrorCode.VAR_RETURN_TYPE, ParserErrorCode.VAR_TYPEDEF, ParserErrorCode.VOID_PARAMETER, ParserErrorCode.VOID_VARIABLE, // // scanner.dart: // ScannerErrorCode.ILLEGAL_CHARACTER, ScannerErrorCode.MISSING_DIGIT, ScannerErrorCode.MISSING_HEX_DIGIT, ScannerErrorCode.MISSING_QUOTE, ScannerErrorCode.UNABLE_GET_CONTENT, ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT, ScannerErrorCode.UNTERMINATED_STRING_LITERAL, ]; /** * The lazy initialized map from [uniqueName] to the [ErrorCode] instance. */ static HashMap _uniqueNameToCodeMap; /** * An empty list of error codes. */ static const List EMPTY_LIST = const []; /** * The name of the error code. */ final String name; /** * The template used to create the message to be displayed for this error. The * message should indicate what is wrong and why it is wrong. */ final String message; /** * The template used to create the correction to be displayed for this error, * or `null` if there is no correction information for this error. The * correction should indicate how the user can fix the error. */ final String correction; /** * Initialize a newly created error code to have the given [name]. The message * associated with the error will be created from the given [message] * template. The correction associated with the error will be created from the * given [correction] template. */ const ErrorCode(this.name, this.message, [this.correction]); /** * The severity of the error. */ ErrorSeverity get errorSeverity; /** * The type of the error. */ ErrorType get type; /** * The unique name of this error code. */ String get uniqueName => "$runtimeType.$name"; @override String toString() => uniqueName; /** * Return the [ErrorCode] with the given [uniqueName], or `null` if not * found. */ static ErrorCode byUniqueName(String uniqueName) { if (_uniqueNameToCodeMap == null) { _uniqueNameToCodeMap = new HashMap(); for (ErrorCode errorCode in values) { _uniqueNameToCodeMap[errorCode.uniqueName] = errorCode; } } return _uniqueNameToCodeMap[uniqueName]; } } /** * The properties that can be associated with an [AnalysisError]. */ class ErrorProperty extends Enum { /** * A property whose value is a list of [FieldElement]s that are final, but * not initialized by a constructor. */ static const ErrorProperty> NOT_INITIALIZED_FIELDS = const ErrorProperty>('NOT_INITIALIZED_FIELDS', 0); /** * A property whose value is the name of the library that is used by all * of the "part of" directives, so should be used in the "library" directive. * Is `null` if there is no a single name used by all of the parts. */ static const ErrorProperty PARTS_LIBRARY_NAME = const ErrorProperty('PARTS_LIBRARY_NAME', 1); /** * A property whose value is a list of [ExecutableElement] that should * be but are not implemented by a concrete class. */ static const ErrorProperty> UNIMPLEMENTED_METHODS = const ErrorProperty>('UNIMPLEMENTED_METHODS', 2); static const List values = const [ NOT_INITIALIZED_FIELDS, PARTS_LIBRARY_NAME, UNIMPLEMENTED_METHODS ]; const ErrorProperty(String name, int ordinal) : super(name, ordinal); } /** * The severity of an [ErrorCode]. */ class ErrorSeverity extends Enum { /** * The severity representing a non-error. This is never used for any error * code, but is useful for clients. */ static const ErrorSeverity NONE = const ErrorSeverity('NONE', 0, " ", "none"); /** * The severity representing an informational level analysis issue. */ static const ErrorSeverity INFO = const ErrorSeverity('INFO', 1, "I", "info"); /** * The severity representing a warning. Warnings can become errors if the `-Werror` command * line flag is specified. */ static const ErrorSeverity WARNING = const ErrorSeverity('WARNING', 2, "W", "warning"); /** * The severity representing an error. */ static const ErrorSeverity ERROR = const ErrorSeverity('ERROR', 3, "E", "error"); static const List values = const [NONE, INFO, WARNING, ERROR]; /** * The name of the severity used when producing machine output. */ final String machineCode; /** * The name of the severity used when producing readable output. */ final String displayName; /** * Initialize a newly created severity with the given names. * * Parameters: * 0: the name of the severity used when producing machine output * 1: the name of the severity used when producing readable output */ const ErrorSeverity( String name, int ordinal, this.machineCode, this.displayName) : super(name, ordinal); /** * Return the severity constant that represents the greatest severity. */ ErrorSeverity max(ErrorSeverity severity) => this.ordinal >= severity.ordinal ? this : severity; } /** * The type of an [ErrorCode]. */ class ErrorType extends Enum { /** * Task (todo) comments in user code. */ static const ErrorType TODO = const ErrorType('TODO', 0, ErrorSeverity.INFO); /** * Extra analysis run over the code to follow best practices, which are not in * the Dart Language Specification. */ static const ErrorType HINT = const ErrorType('HINT', 1, ErrorSeverity.INFO); /** * Compile-time errors are errors that preclude execution. A compile time * error must be reported by a Dart compiler before the erroneous code is * executed. */ static const ErrorType COMPILE_TIME_ERROR = const ErrorType('COMPILE_TIME_ERROR', 2, ErrorSeverity.ERROR); /** * Checked mode compile-time errors are errors that preclude execution in * checked mode. */ static const ErrorType CHECKED_MODE_COMPILE_TIME_ERROR = const ErrorType( 'CHECKED_MODE_COMPILE_TIME_ERROR', 3, ErrorSeverity.ERROR); /** * Static warnings are those warnings reported by the static checker. They * have no effect on execution. Static warnings must be provided by Dart * compilers used during development. */ static const ErrorType STATIC_WARNING = const ErrorType('STATIC_WARNING', 4, ErrorSeverity.WARNING); /** * Many, but not all, static warnings relate to types, in which case they are * known as static type warnings. */ static const ErrorType STATIC_TYPE_WARNING = const ErrorType('STATIC_TYPE_WARNING', 5, ErrorSeverity.WARNING); /** * Syntactic errors are errors produced as a result of input that does not * conform to the grammar. */ static const ErrorType SYNTACTIC_ERROR = const ErrorType('SYNTACTIC_ERROR', 6, ErrorSeverity.ERROR); /** * Lint warnings describe style and best practice recommendations that can be * used to formalize a project's style guidelines. */ static const ErrorType LINT = const ErrorType('LINT', 7, ErrorSeverity.INFO); static const List values = const [ TODO, HINT, COMPILE_TIME_ERROR, CHECKED_MODE_COMPILE_TIME_ERROR, STATIC_WARNING, STATIC_TYPE_WARNING, SYNTACTIC_ERROR, LINT ]; /** * The severity of this type of error. */ final ErrorSeverity severity; /** * Initialize a newly created error type to have the given [name] and * [severity]. */ const ErrorType(String name, int ordinal, this.severity) : super(name, ordinal); String get displayName => name.toLowerCase().replaceAll('_', ' '); }