| Index: pkg/analyzer/lib/src/dart/error/hint_codes.dart
|
| diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
|
| index 011b8424a124fe708134c23b6e4e3910571330ba..d9914a2e844e0c0395690290b078fb635254b3e9 100644
|
| --- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
|
| +++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
|
| @@ -95,12 +95,6 @@ class HintCode extends ErrorCode {
|
| "Try replacing the use of the deprecated member with the replacement.");
|
|
|
| /**
|
| - * Duplicate imports.
|
| - */
|
| - static const HintCode DUPLICATE_IMPORT = const HintCode('DUPLICATE_IMPORT',
|
| - "Duplicate import.", "Try removing all but one import of the library.");
|
| -
|
| - /**
|
| * Hint to use the ~/ operator.
|
| */
|
| static const HintCode DIVISION_OPTIMIZATION = const HintCode(
|
| @@ -109,40 +103,39 @@ class HintCode extends ErrorCode {
|
| "Try re-writing the expression to use the '~/' operator.");
|
|
|
| /**
|
| - * Hint for the `x is double` type checks.
|
| - */
|
| - static const HintCode IS_DOUBLE = const HintCode(
|
| - 'IS_DOUBLE',
|
| - "When compiled to JS, this test might return true when the left hand "
|
| - "side is an int.",
|
| - "Try testing for 'num' instead.");
|
| -
|
| - /**
|
| - * Hint for the `x is int` type checks.
|
| + * Duplicate imports.
|
| */
|
| - static const HintCode IS_INT = const HintCode(
|
| - 'IS_INT',
|
| - "When compiled to JS, this test might return true when the left hand "
|
| - "side is a double.",
|
| - "Try testing for 'num' instead.");
|
| + static const HintCode DUPLICATE_IMPORT = const HintCode('DUPLICATE_IMPORT',
|
| + "Duplicate import.", "Try removing all but one import of the library.");
|
|
|
| /**
|
| - * Hint for the `x is! double` type checks.
|
| + * It is a bad practice for a source file in a package "lib" directory
|
| + * hierarchy to traverse outside that directory hierarchy. For example, a
|
| + * source file in the "lib" directory should not contain a directive such as
|
| + * `import '../web/some.dart'` which references a file outside the lib
|
| + * directory.
|
| */
|
| - static const HintCode IS_NOT_DOUBLE = const HintCode(
|
| - 'IS_NOT_DOUBLE',
|
| - "When compiled to JS, this test might return false when the left hand "
|
| - "side is an int.",
|
| - "Try testing for 'num' instead.");
|
| + static const HintCode FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE =
|
| + const HintCode(
|
| + 'FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE',
|
| + "A file in the 'lib' directory shouldn't import a file outside the "
|
| + "'lib' directory.",
|
| + "Try removing the import, or "
|
| + "moving the imported file inside the 'lib' directory.");
|
|
|
| /**
|
| - * Hint for the `x is! int` type checks.
|
| + * It is a bad practice for a source file ouside a package "lib" directory
|
| + * hierarchy to traverse into that directory hierarchy. For example, a source
|
| + * file in the "web" directory should not contain a directive such as
|
| + * `import '../lib/some.dart'` which references a file inside the lib
|
| + * directory.
|
| */
|
| - static const HintCode IS_NOT_INT = const HintCode(
|
| - 'IS_NOT_INT',
|
| - "When compiled to JS, this test might return false when the left hand "
|
| - "side is a double.",
|
| - "Try testing for 'num' instead.");
|
| + static const HintCode FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE =
|
| + const HintCode(
|
| + 'FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE',
|
| + "A file outside the 'lib' directory shouldn't reference a file "
|
| + "inside the 'lib' directory using a relative path.",
|
| + "Try using a package: URI instead.");
|
|
|
| /**
|
| * Deferred libraries shouldn't define a top level function 'loadLibrary'.
|
| @@ -199,6 +192,40 @@ class HintCode extends ErrorCode {
|
| "Factory method '{0}' doesn't return a newly allocated object.");
|
|
|
| /**
|
| + * Generic Method DEP: number of type parameters must match.
|
| + * <https://github.com/leafpetersen/dep-generic-methods/blob/master/proposal.md#function-subtyping>
|
| + *
|
| + * Parameters:
|
| + * 0: the number of type parameters in the method
|
| + * 1: the number of type parameters in the overridden method
|
| + * 2: the name of the class where the overridden method is declared
|
| + */
|
| + static const HintCode INVALID_METHOD_OVERRIDE_TYPE_PARAMETERS =
|
| + const HintCode(
|
| + 'INVALID_METHOD_OVERRIDE_TYPE_PARAMETERS',
|
| + "The method has {0} type parameters, but it is overriding a method "
|
| + "with {1} type parameters from '{2}'.",
|
| + "Try changing the number of type parameters so that they are the same.");
|
| +
|
| + /**
|
| + * Generic Method DEP: bounds of type parameters must be compatible.
|
| + * <https://github.com/leafpetersen/dep-generic-methods/blob/master/proposal.md#function-subtyping>
|
| + *
|
| + * Parameters:
|
| + * 0: the type parameter name
|
| + * 1: the type parameter bound
|
| + * 2: the overridden type parameter name
|
| + * 3: the overridden type parameter bound
|
| + * 4: the name of the class where the overridden method is declared
|
| + */
|
| + static const HintCode INVALID_METHOD_OVERRIDE_TYPE_PARAMETER_BOUND =
|
| + const HintCode(
|
| + 'INVALID_METHOD_OVERRIDE_TYPE_PARAMETER_BOUND',
|
| + "The type parameter '{0}' extends '{1}', but that is stricter than "
|
| + "'{2}' extends '{3}' in the overridden method from '{4}'.",
|
| + "Try changing the bounds on the type parameters so that they are compatible.");
|
| +
|
| + /**
|
| * This hint is generated anywhere where a member annotated with `@protected`
|
| * is used outside an instance member of a subclass.
|
| *
|
| @@ -212,6 +239,52 @@ class HintCode extends ErrorCode {
|
| "of '{1}'.");
|
|
|
| /**
|
| + * Hint for the `x is double` type checks.
|
| + */
|
| + static const HintCode IS_DOUBLE = const HintCode(
|
| + 'IS_DOUBLE',
|
| + "When compiled to JS, this test might return true when the left hand "
|
| + "side is an int.",
|
| + "Try testing for 'num' instead.");
|
| +
|
| + /**
|
| + * Hint for the `x is int` type checks.
|
| + */
|
| + static const HintCode IS_INT = const HintCode(
|
| + 'IS_INT',
|
| + "When compiled to JS, this test might return true when the left hand "
|
| + "side is a double.",
|
| + "Try testing for 'num' instead.");
|
| +
|
| + /**
|
| + * Hint for the `x is! double` type checks.
|
| + */
|
| + static const HintCode IS_NOT_DOUBLE = const HintCode(
|
| + 'IS_NOT_DOUBLE',
|
| + "When compiled to JS, this test might return false when the left hand "
|
| + "side is an int.",
|
| + "Try testing for 'num' instead.");
|
| +
|
| + /**
|
| + * Hint for the `x is! int` type checks.
|
| + */
|
| + static const HintCode IS_NOT_INT = const HintCode(
|
| + 'IS_NOT_INT',
|
| + "When compiled to JS, this test might return false when the left hand "
|
| + "side is a double.",
|
| + "Try testing for 'num' instead.");
|
| +
|
| + /**
|
| + * Generate a hint for an element that is annotated with `@JS(...)` whose
|
| + * library declaration is not similarly annotated.
|
| + */
|
| + static const HintCode MISSING_JS_LIB_ANNOTATION = const HintCode(
|
| + 'MISSING_JS_LIB_ANNOTATION',
|
| + "The @JS() annotation can only be used if it is also declared on the "
|
| + "library directive.",
|
| + "Try adding the annotation to the library directive.");
|
| +
|
| + /**
|
| * Generate a hint for a constructor, function or method invocation where a
|
| * required parameter is missing.
|
| *
|
| @@ -234,16 +307,6 @@ class HintCode extends ErrorCode {
|
| "The parameter '{0}' is required. {1}.");
|
|
|
| /**
|
| - * Generate a hint for an element that is annotated with `@JS(...)` whose
|
| - * library declaration is not similarly annotated.
|
| - */
|
| - static const HintCode MISSING_JS_LIB_ANNOTATION = const HintCode(
|
| - 'MISSING_JS_LIB_ANNOTATION',
|
| - "The @JS() annotation can only be used if it is also declared on the "
|
| - "library directive.",
|
| - "Try adding the annotation to the library directive.");
|
| -
|
| - /**
|
| * Generate a hint for methods or functions that have a return type, but do
|
| * not have a non-void return statement on all branches. At the end of methods
|
| * or functions with no return, Dart implicitly returns `null`, avoiding these
|
| @@ -282,6 +345,17 @@ class HintCode extends ErrorCode {
|
| "necessary.");
|
|
|
| /**
|
| + * Hint for classes that override equals, but not hashCode.
|
| + *
|
| + * Parameters:
|
| + * 0: the name of the current class
|
| + */
|
| + static const HintCode OVERRIDE_EQUALS_BUT_NOT_HASH_CODE = const HintCode(
|
| + 'OVERRIDE_EQUALS_BUT_NOT_HASH_CODE',
|
| + "The class '{0}' overrides 'operator==', but not 'get hashCode'.",
|
| + "Try implementing 'hashCode'.");
|
| +
|
| + /**
|
| * A getter with the override annotation does not override an existing getter.
|
| */
|
| static const HintCode OVERRIDE_ON_NON_OVERRIDING_GETTER = const HintCode(
|
| @@ -318,15 +392,14 @@ class HintCode extends ErrorCode {
|
| "removing the override annotation.");
|
|
|
| /**
|
| - * Hint for classes that override equals, but not hashCode.
|
| - *
|
| - * Parameters:
|
| - * 0: the name of the current class
|
| + * It is a bad practice for a package import to reference anything outside the
|
| + * given package, or more generally, it is bad practice for a package import
|
| + * to contain a "..". For example, a source file should not contain a
|
| + * directive such as `import 'package:foo/../some.dart'`.
|
| */
|
| - static const HintCode OVERRIDE_EQUALS_BUT_NOT_HASH_CODE = const HintCode(
|
| - 'OVERRIDE_EQUALS_BUT_NOT_HASH_CODE',
|
| - "The class '{0}' overrides 'operator==', but not 'get hashCode'.",
|
| - "Try implementing 'hashCode'.");
|
| + static const HintCode PACKAGE_IMPORT_CONTAINS_DOT_DOT = const HintCode(
|
| + 'PACKAGE_IMPORT_CONTAINS_DOT_DOT',
|
| + "A package import shouldn't contain '..'.");
|
|
|
| /**
|
| * Type checks of the type `x is! Null` should be done with `x != null`.
|
| @@ -450,6 +523,25 @@ class HintCode extends ErrorCode {
|
| "Try correcting the type check, or removing the type check.");
|
|
|
| /**
|
| + * Unused catch exception variables.
|
| + */
|
| + static const HintCode UNUSED_CATCH_CLAUSE = const HintCode(
|
| + 'UNUSED_CATCH_CLAUSE',
|
| + "The exception variable '{0}' isn't used, so the 'catch' clause can be removed.",
|
| + // TODO(brianwilkerson) Split this error code so that we can differentiate
|
| + // between removing the catch clause and replacing the catch clause with
|
| + // an on clause.
|
| + "Try removing the catch clause.");
|
| +
|
| + /**
|
| + * Unused catch stack trace variables.
|
| + */
|
| + static const HintCode UNUSED_CATCH_STACK = const HintCode(
|
| + 'UNUSED_CATCH_STACK',
|
| + "The stack trace variable '{0}' isn't used and can be removed.",
|
| + "Try removing the stack trace variable, or using it.");
|
| +
|
| + /**
|
| * See [Modifier.IS_USED_IN_LIBRARY].
|
| */
|
| static const HintCode UNUSED_ELEMENT = const HintCode('UNUSED_ELEMENT',
|
| @@ -470,25 +562,6 @@ class HintCode extends ErrorCode {
|
| 'UNUSED_IMPORT', "Unused import.", "Try removing the import directive.");
|
|
|
| /**
|
| - * Unused catch exception variables.
|
| - */
|
| - static const HintCode UNUSED_CATCH_CLAUSE = const HintCode(
|
| - 'UNUSED_CATCH_CLAUSE',
|
| - "The exception variable '{0}' isn't used, so the 'catch' clause can be removed.",
|
| - // TODO(brianwilkerson) Split this error code so that we can differentiate
|
| - // between removing the catch clause and replacing the catch clause with
|
| - // an on clause.
|
| - "Try removing the catch clause.");
|
| -
|
| - /**
|
| - * Unused catch stack trace variables.
|
| - */
|
| - static const HintCode UNUSED_CATCH_STACK = const HintCode(
|
| - 'UNUSED_CATCH_STACK',
|
| - "The stack trace variable '{0}' isn't used and can be removed.",
|
| - "Try removing the stack trace variable, or using it.");
|
| -
|
| - /**
|
| * Unused local variables are local variables which are never read.
|
| */
|
| static const HintCode UNUSED_LOCAL_VARIABLE = const HintCode(
|
| @@ -516,43 +589,20 @@ class HintCode extends ErrorCode {
|
| "The result of '{0}' is being used, even though it is declared to be 'void'.");
|
|
|
| /**
|
| - * It is a bad practice for a source file in a package "lib" directory
|
| - * hierarchy to traverse outside that directory hierarchy. For example, a
|
| - * source file in the "lib" directory should not contain a directive such as
|
| - * `import '../web/some.dart'` which references a file outside the lib
|
| - * directory.
|
| - */
|
| - static const HintCode FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE =
|
| - const HintCode(
|
| - 'FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE',
|
| - "A file in the 'lib' directory shouldn't import a file outside the "
|
| - "'lib' directory.",
|
| - "Try removing the import, or "
|
| - "moving the imported file inside the 'lib' directory.");
|
| -
|
| - /**
|
| - * It is a bad practice for a source file ouside a package "lib" directory
|
| - * hierarchy to traverse into that directory hierarchy. For example, a source
|
| - * file in the "web" directory should not contain a directive such as
|
| - * `import '../lib/some.dart'` which references a file inside the lib
|
| - * directory.
|
| - */
|
| - static const HintCode FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE =
|
| - const HintCode(
|
| - 'FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE',
|
| - "A file outside the 'lib' directory shouldn't reference a file "
|
| - "inside the 'lib' directory using a relative path.",
|
| - "Try using a package: URI instead.");
|
| -
|
| - /**
|
| - * It is a bad practice for a package import to reference anything outside the
|
| - * given package, or more generally, it is bad practice for a package import
|
| - * to contain a "..". For example, a source file should not contain a
|
| - * directive such as `import 'package:foo/../some.dart'`.
|
| - */
|
| - static const HintCode PACKAGE_IMPORT_CONTAINS_DOT_DOT = const HintCode(
|
| - 'PACKAGE_IMPORT_CONTAINS_DOT_DOT',
|
| - "A package import shouldn't contain '..'.");
|
| + * It will be a static type warning if <i>m</i> is not a generic method with
|
| + * exactly <i>n</i> type parameters.
|
| + *
|
| + * Parameters:
|
| + * 0: the name of the method being referenced (<i>G</i>)
|
| + * 1: the number of type parameters that were declared
|
| + * 2: the number of type arguments provided
|
| + */
|
| + static const HintCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD =
|
| + const HintCode(
|
| + 'WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD',
|
| + "The method '{0}' is declared with {1} type parameters, "
|
| + "but {2} type arguments were given.",
|
| + "Try adjusting the number of type arguments.");
|
|
|
| /**
|
| * Initialize a newly created error code to have the given [name]. The message
|
|
|