Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(330)

Side by Side Diff: pkg/analyzer/lib/src/error/codes.dart

Issue 2442463002: Split out error codes into separate files (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.src.error.codes; 5 library analyzer.src.error.codes;
6 6
7 import 'package:analyzer/error/error.dart'; 7 import 'package:analyzer/error/error.dart';
8 import 'package:analyzer/src/dart/element/element.dart';
9 8
10 /** 9 export 'package:analyzer/src/analysis_options/error/option_codes.dart';
11 * The error codes used for errors in analysis options files. The convention for 10 export 'package:analyzer/src/dart/error/hint_codes.dart';
12 * this class is for the name of the error code to indicate the problem that 11 export 'package:analyzer/src/dart/error/lint_codes.dart';
13 * caused the error to be generated and for the error message to explain what is 12 export 'package:analyzer/src/dart/error/todo_codes.dart';
14 * wrong and, when appropriate, how the problem can be corrected. 13 export 'package:analyzer/src/html/error/html_codes.dart';
15 */
16 class AnalysisOptionsErrorCode extends ErrorCode {
17 /**
18 * An error code indicating that there is a syntactic error in the file.
19 *
20 * Parameters:
21 * 0: the error message from the parse error
22 */
23 static const AnalysisOptionsErrorCode PARSE_ERROR =
24 const AnalysisOptionsErrorCode('PARSE_ERROR', '{0}');
25
26 /**
27 * Initialize a newly created error code to have the given [name].
28 */
29 const AnalysisOptionsErrorCode(String name, String message,
30 [String correction])
31 : super(name, message, correction);
32
33 @override
34 ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
35
36 @override
37 ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
38 }
39
40 /**
41 * The error codes used for warnings in analysis options files. The convention
42 * for this class is for the name of the error code to indicate the problem that
43 * caused the error to be generated and for the error message to explain what is
44 * wrong and, when appropriate, how the problem can be corrected.
45 */
46 class AnalysisOptionsWarningCode extends ErrorCode {
47 /**
48 * An error code indicating that a plugin is being configured with an
49 * unsupported option and legal options are provided.
50 *
51 * Parameters:
52 * 0: the plugin name
53 * 1: the unsupported option key
54 * 2: legal values
55 */
56 static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUES =
57 const AnalysisOptionsWarningCode(
58 'UNSUPPORTED_OPTION_WITH_LEGAL_VALUES',
59 "The option '{1}' isn't supported by '{0}'.",
60 "Try using one of the supported options: {2}.");
61
62 /**
63 * An error code indicating that a plugin is being configured with an
64 * unsupported option where there is just one legal value.
65 *
66 * Parameters:
67 * 0: the plugin name
68 * 1: the unsupported option key
69 * 2: the legal value
70 */
71 static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUE =
72 const AnalysisOptionsWarningCode(
73 'UNSUPPORTED_OPTION_WITH_LEGAL_VALUE',
74 "The option '{1}' isn't supported by '{0}'."
75 "Try using the only supported option: '{2}'.");
76
77 /**
78 * An error code indicating that an option entry is being configured with an
79 * unsupported value.
80 *
81 * Parameters:
82 * 0: the option name
83 * 1: the unsupported value
84 * 2: legal values
85 */
86 static const AnalysisOptionsWarningCode UNSUPPORTED_VALUE =
87 const AnalysisOptionsWarningCode(
88 'UNSUPPORTED_VALUE',
89 "The value '{1}' isn't supported by '{0}'.",
90 "Try using one of the supported options: {2}.");
91
92 /**
93 * An error code indicating that an unrecognized error code is being used to
94 * specify an error filter.
95 *
96 * Parameters:
97 * 0: the unrecognized error code
98 */
99 static const AnalysisOptionsWarningCode UNRECOGNIZED_ERROR_CODE =
100 const AnalysisOptionsWarningCode(
101 'UNRECOGNIZED_ERROR_CODE', "'{0}' isn't a recognized error code.");
102
103 /**
104 * Initialize a newly created warning code to have the given [name].
105 */
106 const AnalysisOptionsWarningCode(String name, String message,
107 [String correction])
108 : super(name, message, correction);
109
110 @override
111 ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
112
113 @override
114 ErrorType get type => ErrorType.STATIC_WARNING;
115 }
116 14
117 /** 15 /**
118 * The error codes used for compile time errors caused by constant evaluation 16 * The error codes used for compile time errors caused by constant evaluation
119 * that would throw an exception when run in checked mode. The client of the 17 * that would throw an exception when run in checked mode. The client of the
120 * analysis engine is responsible for determining how these errors should be 18 * analysis engine is responsible for determining how these errors should be
121 * presented to the user (for example, a command-line compiler might elect to 19 * presented to the user (for example, a command-line compiler might elect to
122 * treat these errors differently depending whether it is compiling it "checked" 20 * treat these errors differently depending whether it is compiling it "checked"
123 * mode). 21 * mode).
124 */ 22 */
125 class CheckedModeCompileTimeErrorCode extends ErrorCode { 23 class CheckedModeCompileTimeErrorCode extends ErrorCode {
(...skipping 2483 matching lines...) Expand 10 before | Expand all | Expand 10 after
2609 : super(name, message, correction); 2507 : super(name, message, correction);
2610 2508
2611 @override 2509 @override
2612 ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity; 2510 ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity;
2613 2511
2614 @override 2512 @override
2615 ErrorType get type => ErrorType.COMPILE_TIME_ERROR; 2513 ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
2616 } 2514 }
2617 2515
2618 /** 2516 /**
2619 * The hints and coding recommendations for best practices which are not
2620 * mentioned in the Dart Language Specification.
2621 */
2622 class HintCode extends ErrorCode {
2623 /**
2624 * When an abstract supertype member is referenced with `super` as its target,
2625 * it cannot be overridden, so it is always a runtime error.
2626 *
2627 * Parameters:
2628 * 0: the display name for the kind of the referenced element
2629 * 1: the name of the referenced element
2630 */
2631 static const HintCode ABSTRACT_SUPER_MEMBER_REFERENCE = const HintCode(
2632 'ABSTRACT_SUPER_MEMBER_REFERENCE',
2633 "The {0} '{1}' is always abstract in the supertype.");
2634
2635 /**
2636 * This hint is generated anywhere where the
2637 * [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE] would have been generated,
2638 * if we used propagated information for the warnings.
2639 *
2640 * Parameters:
2641 * 0: the name of the actual argument type
2642 * 1: the name of the expected type
2643 */
2644 static const HintCode ARGUMENT_TYPE_NOT_ASSIGNABLE = const HintCode(
2645 'ARGUMENT_TYPE_NOT_ASSIGNABLE',
2646 "The argument type '{0}' can't be assigned to the parameter type '{1}'.");
2647
2648 /**
2649 * When the target expression uses '?.' operator, it can be `null`, so all the
2650 * subsequent invocations should also use '?.' operator.
2651 */
2652 static const HintCode CAN_BE_NULL_AFTER_NULL_AWARE = const HintCode(
2653 'CAN_BE_NULL_AFTER_NULL_AWARE',
2654 "The target expression uses '?.', so its value can be null.",
2655 "Replace the '.' with a '?.' in the invocation.");
2656
2657 /**
2658 * Dead code is code that is never reached, this can happen for instance if a
2659 * statement follows a return statement.
2660 */
2661 static const HintCode DEAD_CODE = const HintCode(
2662 'DEAD_CODE',
2663 "Dead code.",
2664 "Try removing the code, or "
2665 "fixing the code before it so that it can be reached.");
2666
2667 /**
2668 * Dead code is code that is never reached. This case covers cases where the
2669 * user has catch clauses after `catch (e)` or `on Object catch (e)`.
2670 */
2671 static const HintCode DEAD_CODE_CATCH_FOLLOWING_CATCH = const HintCode(
2672 'DEAD_CODE_CATCH_FOLLOWING_CATCH',
2673 "Dead code: catch clauses after a 'catch (e)' or "
2674 "an 'on Object catch (e)' are never reached.",
2675 "Try reordering the catch clauses so that they can be reached, or "
2676 "removing the unreachable catch clauses.");
2677
2678 /**
2679 * Dead code is code that is never reached. This case covers cases where the
2680 * user has an on-catch clause such as `on A catch (e)`, where a supertype of
2681 * `A` was already caught.
2682 *
2683 * Parameters:
2684 * 0: name of the subtype
2685 * 1: name of the supertype
2686 */
2687 static const HintCode DEAD_CODE_ON_CATCH_SUBTYPE = const HintCode(
2688 'DEAD_CODE_ON_CATCH_SUBTYPE',
2689 "Dead code: this on-catch block will never be executed because '{0}' is "
2690 "a subtype of '{1}' and hence will have been caught above.",
2691 "Try reordering the catch clauses so that this block can be reached, or "
2692 "removing the unreachable catch clause.");
2693
2694 /**
2695 * Deprecated members should not be invoked or used.
2696 *
2697 * Parameters:
2698 * 0: the name of the member
2699 */
2700 static const HintCode DEPRECATED_MEMBER_USE = const HintCode(
2701 'DEPRECATED_MEMBER_USE',
2702 "'{0}' is deprecated and shouldn't be used.",
2703 "Try replacing the use of the deprecated member with the replacement.");
2704
2705 /**
2706 * Duplicate imports.
2707 */
2708 static const HintCode DUPLICATE_IMPORT = const HintCode('DUPLICATE_IMPORT',
2709 "Duplicate import.", "Try removing all but one import of the library.");
2710
2711 /**
2712 * Hint to use the ~/ operator.
2713 */
2714 static const HintCode DIVISION_OPTIMIZATION = const HintCode(
2715 'DIVISION_OPTIMIZATION',
2716 "The operator x ~/ y is more efficient than (x / y).toInt().",
2717 "Try re-writing the expression to use the '~/' operator.");
2718
2719 /**
2720 * Hint for the `x is double` type checks.
2721 */
2722 static const HintCode IS_DOUBLE = const HintCode(
2723 'IS_DOUBLE',
2724 "When compiled to JS, this test might return true when the left hand "
2725 "side is an int.",
2726 "Try testing for 'num' instead.");
2727
2728 /**
2729 * Hint for the `x is int` type checks.
2730 */
2731 static const HintCode IS_INT = const HintCode(
2732 'IS_INT',
2733 "When compiled to JS, this test might return true when the left hand "
2734 "side is a double.",
2735 "Try testing for 'num' instead.");
2736
2737 /**
2738 * Hint for the `x is! double` type checks.
2739 */
2740 static const HintCode IS_NOT_DOUBLE = const HintCode(
2741 'IS_NOT_DOUBLE',
2742 "When compiled to JS, this test might return false when the left hand "
2743 "side is an int.",
2744 "Try testing for 'num' instead.");
2745
2746 /**
2747 * Hint for the `x is! int` type checks.
2748 */
2749 static const HintCode IS_NOT_INT = const HintCode(
2750 'IS_NOT_INT',
2751 "When compiled to JS, this test might return false when the left hand "
2752 "side is a double.",
2753 "Try testing for 'num' instead.");
2754
2755 /**
2756 * Deferred libraries shouldn't define a top level function 'loadLibrary'.
2757 */
2758 static const HintCode IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION =
2759 const HintCode(
2760 'IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION',
2761 "The library '{0}' defines a top-level function named 'loadLibrary' "
2762 "which is hidden by deferring this library.",
2763 "Try changing the import to not be deferred, or "
2764 "rename the function in the imported library.");
2765
2766 /**
2767 * This hint is generated anywhere where the
2768 * [StaticTypeWarningCode.INVALID_ASSIGNMENT] would have been generated, if we
2769 * used propagated information for the warnings.
2770 *
2771 * Parameters:
2772 * 0: the name of the right hand side type
2773 * 1: the name of the left hand side type
2774 */
2775 static const HintCode INVALID_ASSIGNMENT = const HintCode(
2776 'INVALID_ASSIGNMENT',
2777 "A value of type '{0}' can't be assigned to a variable of type '{1}'.",
2778 "Try changing the type of the variable, or "
2779 "casting the right-hand type to '{1}'.");
2780
2781 /**
2782 * This hint is generated anywhere a @factory annotation is associated with
2783 * anything other than a method.
2784 */
2785 static const HintCode INVALID_FACTORY_ANNOTATION = const HintCode(
2786 'INVALID_FACTORY_ANNOTATION',
2787 "Only methods can be annotated as factories.");
2788
2789 /**
2790 * This hint is generated anywhere a @factory annotation is associated with
2791 * a method that does not declare a return type.
2792 */
2793 static const HintCode INVALID_FACTORY_METHOD_DECL = const HintCode(
2794 'INVALID_FACTORY_METHOD_DECL',
2795 "Factory method '{0}' must have a return type.");
2796
2797 /**
2798 * This hint is generated anywhere a @factory annotation is associated with
2799 * a non-abstract method that can return anything other than a newly allocated
2800 * object.
2801 *
2802 * Parameters:
2803 * 0: the name of the method
2804 */
2805 static const HintCode INVALID_FACTORY_METHOD_IMPL = const HintCode(
2806 'INVALID_FACTORY_METHOD_IMPL',
2807 "Factory method '{0}' doesn't return a newly allocated object.");
2808
2809 /**
2810 * This hint is generated anywhere where a member annotated with `@protected`
2811 * is used outside an instance member of a subclass.
2812 *
2813 * Parameters:
2814 * 0: the name of the member
2815 * 1: the name of the defining class
2816 */
2817 static const HintCode INVALID_USE_OF_PROTECTED_MEMBER = const HintCode(
2818 'INVALID_USE_OF_PROTECTED_MEMBER',
2819 "The member '{0}' can only be used within instance members of subclasses "
2820 "of '{1}'.");
2821
2822 /**
2823 * Generate a hint for a constructor, function or method invocation where a
2824 * required parameter is missing.
2825 *
2826 * Parameters:
2827 * 0: the name of the parameter
2828 */
2829 static const HintCode MISSING_REQUIRED_PARAM = const HintCode(
2830 'MISSING_REQUIRED_PARAM', "The parameter '{0}' is required.");
2831
2832 /**
2833 * Generate a hint for a constructor, function or method invocation where a
2834 * required parameter is missing.
2835 *
2836 * Parameters:
2837 * 0: the name of the parameter
2838 * 1: message details
2839 */
2840 static const HintCode MISSING_REQUIRED_PARAM_WITH_DETAILS = const HintCode(
2841 'MISSING_REQUIRED_PARAM_WITH_DETAILS',
2842 "The parameter '{0}' is required. {1}.");
2843
2844 /**
2845 * Generate a hint for an element that is annotated with `@JS(...)` whose
2846 * library declaration is not similarly annotated.
2847 */
2848 static const HintCode MISSING_JS_LIB_ANNOTATION = const HintCode(
2849 'MISSING_JS_LIB_ANNOTATION',
2850 "The @JS() annotation can only be used if it is also declared on the "
2851 "library directive.",
2852 "Try adding the annotation to the library directive.");
2853
2854 /**
2855 * Generate a hint for methods or functions that have a return type, but do
2856 * not have a non-void return statement on all branches. At the end of methods
2857 * or functions with no return, Dart implicitly returns `null`, avoiding these
2858 * implicit returns is considered a best practice.
2859 *
2860 * Parameters:
2861 * 0: the name of the declared return type
2862 */
2863 static const HintCode MISSING_RETURN = const HintCode(
2864 'MISSING_RETURN',
2865 "This function declares a return type of '{0}', but doesn't end with a "
2866 "return statement.",
2867 "Try adding a return statement, or changing the return type to 'void'.");
2868
2869 /**
2870 * Generate a hint for methods that override methods annotated `@mustCallSuper `
2871 * that do not invoke the overridden super method.
2872 *
2873 * Parameters:
2874 * 0: the name of the class declaring the overriden method
2875 */
2876 static const HintCode MUST_CALL_SUPER = const HintCode(
2877 'MUST_CALL_SUPER',
2878 "This method overrides a method annotated as @mustCall super in '{0}', "
2879 "but does invoke the overriden method.");
2880
2881 /**
2882 * A condition in a control flow statement could evaluate to `null` because it
2883 * uses the null-aware '?.' operator.
2884 */
2885 static const HintCode NULL_AWARE_IN_CONDITION = const HintCode(
2886 'NULL_AWARE_IN_CONDITION',
2887 "The value of the '?.' operator can be 'null', which isn't appropriate "
2888 "in a condition.",
2889 "Try replacing the '?.' with a '.', testing the left-hand side for null if "
2890 "necessary.");
2891
2892 /**
2893 * A getter with the override annotation does not override an existing getter.
2894 */
2895 static const HintCode OVERRIDE_ON_NON_OVERRIDING_GETTER = const HintCode(
2896 'OVERRIDE_ON_NON_OVERRIDING_GETTER',
2897 "Getter doesn't override an inherited getter.",
2898 "Try updating this class to match the superclass, or "
2899 "removing the override annotation.");
2900
2901 /**
2902 * A field with the override annotation does not override a getter or setter.
2903 */
2904 static const HintCode OVERRIDE_ON_NON_OVERRIDING_FIELD = const HintCode(
2905 'OVERRIDE_ON_NON_OVERRIDING_FIELD',
2906 "Field doesn't override an inherited getter or setter.",
2907 "Try updating this class to match the superclass, or "
2908 "removing the override annotation.");
2909
2910 /**
2911 * A method with the override annotation does not override an existing method.
2912 */
2913 static const HintCode OVERRIDE_ON_NON_OVERRIDING_METHOD = const HintCode(
2914 'OVERRIDE_ON_NON_OVERRIDING_METHOD',
2915 "Method doesn't override an inherited method.",
2916 "Try updating this class to match the superclass, or "
2917 "removing the override annotation.");
2918
2919 /**
2920 * A setter with the override annotation does not override an existing setter.
2921 */
2922 static const HintCode OVERRIDE_ON_NON_OVERRIDING_SETTER = const HintCode(
2923 'OVERRIDE_ON_NON_OVERRIDING_SETTER',
2924 "Setter doesn't override an inherited setter.",
2925 "Try updating this class to match the superclass, or "
2926 "removing the override annotation.");
2927
2928 /**
2929 * Hint for classes that override equals, but not hashCode.
2930 *
2931 * Parameters:
2932 * 0: the name of the current class
2933 */
2934 static const HintCode OVERRIDE_EQUALS_BUT_NOT_HASH_CODE = const HintCode(
2935 'OVERRIDE_EQUALS_BUT_NOT_HASH_CODE',
2936 "The class '{0}' overrides 'operator==', but not 'get hashCode'.",
2937 "Try implementing 'hashCode'.");
2938
2939 /**
2940 * Type checks of the type `x is! Null` should be done with `x != null`.
2941 */
2942 static const HintCode TYPE_CHECK_IS_NOT_NULL = const HintCode(
2943 'TYPE_CHECK_IS_NOT_NULL',
2944 "Tests for non-null should be done with '!= null'.",
2945 "Try replacing the 'is! Null' check with '!= null'.");
2946
2947 /**
2948 * Type checks of the type `x is Null` should be done with `x == null`.
2949 */
2950 static const HintCode TYPE_CHECK_IS_NULL = const HintCode(
2951 'TYPE_CHECK_IS_NULL',
2952 "Tests for null should be done with '== null'.",
2953 "Try replacing the 'is Null' check with '== null'.");
2954
2955 /**
2956 * This hint is generated anywhere where the
2957 * [StaticTypeWarningCode.UNDEFINED_GETTER] or
2958 * [StaticWarningCode.UNDEFINED_GETTER] would have been generated, if we used
2959 * propagated information for the warnings.
2960 *
2961 * Parameters:
2962 * 0: the name of the getter
2963 * 1: the name of the enclosing type where the getter is being looked for
2964 */
2965 static const HintCode UNDEFINED_GETTER = const HintCode(
2966 'UNDEFINED_GETTER',
2967 "The getter '{0}' isn't defined for the class '{1}'.",
2968 "Try defining a getter or field named '{0}', or invoke a different getter. ");
2969
2970 /**
2971 * An undefined name hidden in an import or export directive.
2972 */
2973 static const HintCode UNDEFINED_HIDDEN_NAME = const HintCode(
2974 'UNDEFINED_HIDDEN_NAME',
2975 "The library '{0}' doesn't export a member with the hidden name '{1}'.",
2976 "Try removing the name from the list of hidden members.");
2977
2978 /**
2979 * This hint is generated anywhere where the
2980 * [StaticTypeWarningCode.UNDEFINED_METHOD] would have been generated, if we
2981 * used propagated information for the warnings.
2982 *
2983 * Parameters:
2984 * 0: the name of the method that is undefined
2985 * 1: the resolved type name that the method lookup is happening on
2986 */
2987 static const HintCode UNDEFINED_METHOD = const HintCode(
2988 'UNDEFINED_METHOD',
2989 "The method '{0}' isn't defined for the class '{1}'.",
2990 "Try correcting the name to the name of an existing method, or"
2991 "defining a method named '{0}'.");
2992
2993 /**
2994 * This hint is generated anywhere where the
2995 * [StaticTypeWarningCode.UNDEFINED_OPERATOR] would have been generated, if we
2996 * used propagated information for the warnings.
2997 *
2998 * Parameters:
2999 * 0: the name of the operator
3000 * 1: the name of the enclosing type where the operator is being looked for
3001 */
3002 static const HintCode UNDEFINED_OPERATOR = const HintCode(
3003 'UNDEFINED_OPERATOR',
3004 "The operator '{0}' isn't defined for the class '{1}'.",
3005 "Try defining the operator '{0}'.");
3006
3007 /**
3008 * This hint is generated anywhere where the
3009 * [StaticTypeWarningCode.UNDEFINED_SETTER] or
3010 * [StaticWarningCode.UNDEFINED_SETTER] would have been generated, if we used
3011 * propagated information for the warnings.
3012 *
3013 * Parameters:
3014 * 0: the name of the setter
3015 * 1: the name of the enclosing type where the setter is being looked for
3016 */
3017 static const HintCode UNDEFINED_SETTER = const HintCode(
3018 'UNDEFINED_SETTER',
3019 "The setter '{0}' isn't defined for the class '{1}'.",
3020 "Try defining a setter or field named '{0}', or invoke a different setter. ");
3021
3022 /**
3023 * An undefined name shown in an import or export directive.
3024 */
3025 static const HintCode UNDEFINED_SHOWN_NAME = const HintCode(
3026 'UNDEFINED_SHOWN_NAME',
3027 "The library '{0}' doesn't export a member with the shown name '{1}'.",
3028 "Try removing the name from the list of shown members.");
3029
3030 /**
3031 * Unnecessary cast.
3032 */
3033 static const HintCode UNNECESSARY_CAST = const HintCode(
3034 'UNNECESSARY_CAST', "Unnecessary cast.", "Try removing the cast.");
3035
3036 /**
3037 * Unnecessary `noSuchMethod` declaration.
3038 */
3039 static const HintCode UNNECESSARY_NO_SUCH_METHOD = const HintCode(
3040 'UNNECESSARY_NO_SUCH_METHOD',
3041 "Unnecessary 'noSuchMethod' declaration.",
3042 "Try removing the declaration of 'noSuchMethod'.");
3043
3044 /**
3045 * Unnecessary type checks, the result is always false.
3046 */
3047 static const HintCode UNNECESSARY_TYPE_CHECK_FALSE = const HintCode(
3048 'UNNECESSARY_TYPE_CHECK_FALSE',
3049 "Unnecessary type check, the result is always false.",
3050 "Try correcting the type check, or removing the type check.");
3051
3052 /**
3053 * Unnecessary type checks, the result is always true.
3054 */
3055 static const HintCode UNNECESSARY_TYPE_CHECK_TRUE = const HintCode(
3056 'UNNECESSARY_TYPE_CHECK_TRUE',
3057 "Unnecessary type check, the result is always true.",
3058 "Try correcting the type check, or removing the type check.");
3059
3060 /**
3061 * See [Modifier.IS_USED_IN_LIBRARY].
3062 */
3063 static const HintCode UNUSED_ELEMENT = const HintCode('UNUSED_ELEMENT',
3064 "The {0} '{1}' isn't used.", "Try removing the declaration of '{1}'.");
3065
3066 /**
3067 * Unused fields are fields which are never read.
3068 */
3069 static const HintCode UNUSED_FIELD = const HintCode(
3070 'UNUSED_FIELD',
3071 "The value of the field '{0}' isn't used.",
3072 "Try removing the field, or using it.");
3073
3074 /**
3075 * Unused imports are imports which are never used.
3076 */
3077 static const HintCode UNUSED_IMPORT = const HintCode(
3078 'UNUSED_IMPORT', "Unused import.", "Try removing the import directive.");
3079
3080 /**
3081 * Unused catch exception variables.
3082 */
3083 static const HintCode UNUSED_CATCH_CLAUSE = const HintCode(
3084 'UNUSED_CATCH_CLAUSE',
3085 "The exception variable '{0}' isn't used, so the 'catch' clause can be rem oved.",
3086 // TODO(brianwilkerson) Split this error code so that we can differentiate
3087 // between removing the catch clause and replacing the catch clause with
3088 // an on clause.
3089 "Try removing the catch clause.");
3090
3091 /**
3092 * Unused catch stack trace variables.
3093 */
3094 static const HintCode UNUSED_CATCH_STACK = const HintCode(
3095 'UNUSED_CATCH_STACK',
3096 "The stack trace variable '{0}' isn't used and can be removed.",
3097 "Try removing the stack trace variable, or using it.");
3098
3099 /**
3100 * Unused local variables are local variables which are never read.
3101 */
3102 static const HintCode UNUSED_LOCAL_VARIABLE = const HintCode(
3103 'UNUSED_LOCAL_VARIABLE',
3104 "The value of the local variable '{0}' isn't used.",
3105 "Try removing the variable, or using it.");
3106
3107 /**
3108 * Unused shown names are names shown on imports which are never used.
3109 */
3110 static const HintCode UNUSED_SHOWN_NAME = const HintCode(
3111 'UNUSED_SHOWN_NAME',
3112 "The name {0} is shown, but not used.",
3113 "Try removing the name from the list of shown members.");
3114
3115 /**
3116 * Hint for cases where the source expects a method or function to return a
3117 * non-void result, but the method or function signature returns void.
3118 *
3119 * Parameters:
3120 * 0: the name of the method or function that returns void
3121 */
3122 static const HintCode USE_OF_VOID_RESULT = const HintCode(
3123 'USE_OF_VOID_RESULT',
3124 "The result of '{0}' is being used, even though it is declared to be 'void '.");
3125
3126 /**
3127 * It is a bad practice for a source file in a package "lib" directory
3128 * hierarchy to traverse outside that directory hierarchy. For example, a
3129 * source file in the "lib" directory should not contain a directive such as
3130 * `import '../web/some.dart'` which references a file outside the lib
3131 * directory.
3132 */
3133 static const HintCode FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE =
3134 const HintCode(
3135 'FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE',
3136 "A file in the 'lib' directory shouldn't import a file outside the "
3137 "'lib' directory.",
3138 "Try removing the import, or "
3139 "moving the imported file inside the 'lib' directory.");
3140
3141 /**
3142 * It is a bad practice for a source file ouside a package "lib" directory
3143 * hierarchy to traverse into that directory hierarchy. For example, a source
3144 * file in the "web" directory should not contain a directive such as
3145 * `import '../lib/some.dart'` which references a file inside the lib
3146 * directory.
3147 */
3148 static const HintCode FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE =
3149 const HintCode(
3150 'FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE',
3151 "A file outside the 'lib' directory shouldn't reference a file "
3152 "inside the 'lib' directory using a relative path.",
3153 "Try using a package: URI instead.");
3154
3155 /**
3156 * It is a bad practice for a package import to reference anything outside the
3157 * given package, or more generally, it is bad practice for a package import
3158 * to contain a "..". For example, a source file should not contain a
3159 * directive such as `import 'package:foo/../some.dart'`.
3160 */
3161 static const HintCode PACKAGE_IMPORT_CONTAINS_DOT_DOT = const HintCode(
3162 'PACKAGE_IMPORT_CONTAINS_DOT_DOT',
3163 "A package import shouldn't contain '..'.");
3164
3165 /**
3166 * Initialize a newly created error code to have the given [name]. The message
3167 * associated with the error will be created from the given [message]
3168 * template. The correction associated with the error will be created from the
3169 * given [correction] template.
3170 */
3171 const HintCode(String name, String message, [String correction])
3172 : super(name, message, correction);
3173
3174 @override
3175 ErrorSeverity get errorSeverity => ErrorType.HINT.severity;
3176
3177 @override
3178 ErrorType get type => ErrorType.HINT;
3179 }
3180
3181 /**
3182 * The error codes used for errors in HTML files. The convention for this
3183 * class is for the name of the error code to indicate the problem that caused
3184 * the error to be generated and for the error message to explain what is wrong
3185 * and, when appropriate, how the problem can be corrected.
3186 */
3187 class HtmlErrorCode extends ErrorCode {
3188 /**
3189 * An error code indicating that there is a syntactic error in the file.
3190 *
3191 * Parameters:
3192 * 0: the error message from the parse error
3193 */
3194 static const HtmlErrorCode PARSE_ERROR =
3195 const HtmlErrorCode('PARSE_ERROR', '{0}');
3196
3197 /**
3198 * Initialize a newly created error code to have the given [name]. The message
3199 * associated with the error will be created from the given [message]
3200 * template. The correction associated with the error will be created from the
3201 * given [correction] template.
3202 */
3203 const HtmlErrorCode(String name, String message, [String correction])
3204 : super(name, message, correction);
3205
3206 @override
3207 ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
3208
3209 @override
3210 ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
3211 }
3212
3213 /**
3214 * The error codes used for warnings in HTML files. The convention for this
3215 * class is for the name of the error code to indicate the problem that caused
3216 * the error to be generated and for the error message to explain what is wrong
3217 * and, when appropriate, how the problem can be corrected.
3218 */
3219 class HtmlWarningCode extends ErrorCode {
3220 /**
3221 * An error code indicating that the value of the 'src' attribute of a Dart
3222 * script tag is not a valid URI.
3223 *
3224 * Parameters:
3225 * 0: the URI that is invalid
3226 */
3227 static const HtmlWarningCode INVALID_URI =
3228 const HtmlWarningCode('INVALID_URI', "Invalid URI syntax: '{0}'.");
3229
3230 /**
3231 * An error code indicating that the value of the 'src' attribute of a Dart
3232 * script tag references a file that does not exist.
3233 *
3234 * Parameters:
3235 * 0: the URI pointing to a non-existent file
3236 */
3237 static const HtmlWarningCode URI_DOES_NOT_EXIST = const HtmlWarningCode(
3238 'URI_DOES_NOT_EXIST', "Target of URI doesn't exist: '{0}'.");
3239
3240 /**
3241 * Initialize a newly created error code to have the given [name]. The message
3242 * associated with the error will be created from the given [message]
3243 * template. The correction associated with the error will be created from the
3244 * given [correction] template.
3245 */
3246 const HtmlWarningCode(String name, String message, [String correction])
3247 : super(name, message, correction);
3248
3249 @override
3250 ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
3251
3252 @override
3253 ErrorType get type => ErrorType.STATIC_WARNING;
3254 }
3255
3256 /**
3257 * Defines style and best practice recommendations.
3258 *
3259 * Unlike [HintCode]s, which are akin to traditional static warnings from a
3260 * compiler, lint recommendations focus on matters of style and practices that
3261 * might aggregated to define a project's style guide.
3262 */
3263 class LintCode extends ErrorCode {
3264 const LintCode(String name, String message, [String correction])
3265 : super(name, message, correction);
3266
3267 @override
3268 ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
3269
3270 @override
3271 ErrorType get type => ErrorType.LINT;
3272 }
3273
3274 /**
3275 * The error codes used for static type warnings. The convention for this class 2517 * The error codes used for static type warnings. The convention for this class
3276 * is for the name of the error code to indicate the problem that caused the 2518 * is for the name of the error code to indicate the problem that caused the
3277 * error to be generated and for the error message to explain what is wrong and, 2519 * error to be generated and for the error message to explain what is wrong and,
3278 * when appropriate, how the problem can be corrected. 2520 * when appropriate, how the problem can be corrected.
3279 */ 2521 */
3280 class StaticTypeWarningCode extends ErrorCode { 2522 class StaticTypeWarningCode extends ErrorCode {
3281 /** 2523 /**
3282 * 12.7 Lists: A fresh instance (7.6.1) <i>a</i>, of size <i>n</i>, whose 2524 * 12.7 Lists: A fresh instance (7.6.1) <i>a</i>, of size <i>n</i>, whose
3283 * class implements the built-in class <i>List&lt;E></i> is allocated. 2525 * class implements the built-in class <i>List&lt;E></i> is allocated.
3284 * 2526 *
(...skipping 2318 matching lines...) Expand 10 before | Expand all | Expand 10 after
5603 * created from the optional [correction] template. 4845 * created from the optional [correction] template.
5604 */ 4846 */
5605 const StrongModeCode(ErrorType type, String name, String message, 4847 const StrongModeCode(ErrorType type, String name, String message,
5606 [String correction]) 4848 [String correction])
5607 : type = type, 4849 : type = type,
5608 super('STRONG_MODE_$name', message, correction); 4850 super('STRONG_MODE_$name', message, correction);
5609 4851
5610 @override 4852 @override
5611 ErrorSeverity get errorSeverity => type.severity; 4853 ErrorSeverity get errorSeverity => type.severity;
5612 } 4854 }
5613
5614 /**
5615 * The error code indicating a marker in code for work that needs to be finished
5616 * or revisited.
5617 */
5618 class TodoCode extends ErrorCode {
5619 /**
5620 * The single enum of TodoCode.
5621 */
5622 static const TodoCode TODO = const TodoCode('TODO');
5623
5624 /**
5625 * This matches the two common Dart task styles
5626 *
5627 * * TODO:
5628 * * TODO(username):
5629 *
5630 * As well as
5631 * * TODO
5632 *
5633 * But not
5634 * * todo
5635 * * TODOS
5636 */
5637 static RegExp TODO_REGEX =
5638 new RegExp("([\\s/\\*])((TODO[^\\w\\d][^\\r\\n]*)|(TODO:?\$))");
5639
5640 /**
5641 * Initialize a newly created error code to have the given [name].
5642 */
5643 const TodoCode(String name) : super(name, "{0}");
5644
5645 @override
5646 ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
5647
5648 @override
5649 ErrorType get type => ErrorType.TODO;
5650 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/error/todo_codes.dart ('k') | pkg/analyzer/lib/src/html/error/html_codes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698