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

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

Issue 2342733002: Break up another large file (Closed)
Patch Set: fixed floating comment Created 4 years, 3 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
« no previous file with comments | « pkg/analyzer/lib/src/error.dart ('k') | pkg/analyzer/lib/src/error/pending_error.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.generated.error; 5 library analyzer.src.error.codes;
6 6
7 import 'dart:collection'; 7 import 'package:analyzer/error/error.dart';
8
9 import 'package:analyzer/dart/ast/ast.dart' show AstNode;
10 import 'package:analyzer/dart/ast/token.dart';
11 import 'package:analyzer/dart/element/element.dart';
12 import 'package:analyzer/dart/element/type.dart';
13 import 'package:analyzer/source/error_processor.dart';
14 import 'package:analyzer/src/dart/element/element.dart'; 8 import 'package:analyzer/src/dart/element/element.dart';
15 import 'package:analyzer/src/dart/element/type.dart';
16 import 'package:analyzer/src/dart/scanner/scanner.dart' show ScannerErrorCode;
17 import 'package:analyzer/src/generated/generated/shared_messages.dart' 9 import 'package:analyzer/src/generated/generated/shared_messages.dart'
18 as shared_messages; 10 as shared_messages;
19 import 'package:analyzer/src/generated/java_core.dart';
20 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
21 import 'package:analyzer/src/generated/source.dart';
22 import 'package:analyzer/src/task/model.dart';
23 import 'package:analyzer/task/model.dart';
24 import 'package:source_span/source_span.dart';
25
26 /**
27 * The descriptor used to associate error processors with analysis contexts in
28 * configuration data.
29 */
30 final ListResultDescriptor<ErrorProcessor> CONFIGURED_ERROR_PROCESSORS =
31 new ListResultDescriptorImpl('configured.errors', const <ErrorProcessor>[]);
32
33 /**
34 * An error discovered during the analysis of some Dart code.
35 *
36 * See [AnalysisErrorListener].
37 */
38 class AnalysisError {
39 /**
40 * An empty array of errors used when no errors are expected.
41 */
42 static const List<AnalysisError> NO_ERRORS = const <AnalysisError>[];
43
44 /**
45 * A [Comparator] that sorts by the name of the file that the [AnalysisError]
46 * was found.
47 */
48 static Comparator<AnalysisError> FILE_COMPARATOR =
49 (AnalysisError o1, AnalysisError o2) =>
50 o1.source.shortName.compareTo(o2.source.shortName);
51
52 /**
53 * A [Comparator] that sorts error codes first by their severity (errors
54 * first, warnings second), and then by the error code type.
55 */
56 static Comparator<AnalysisError> ERROR_CODE_COMPARATOR =
57 (AnalysisError o1, AnalysisError o2) {
58 ErrorCode errorCode1 = o1.errorCode;
59 ErrorCode errorCode2 = o2.errorCode;
60 ErrorSeverity errorSeverity1 = errorCode1.errorSeverity;
61 ErrorSeverity errorSeverity2 = errorCode2.errorSeverity;
62 if (errorSeverity1 == errorSeverity2) {
63 ErrorType errorType1 = errorCode1.type;
64 ErrorType errorType2 = errorCode2.type;
65 return errorType1.compareTo(errorType2);
66 } else {
67 return errorSeverity2.compareTo(errorSeverity1);
68 }
69 };
70
71 /**
72 * The error code associated with the error.
73 */
74 final ErrorCode errorCode;
75
76 /**
77 * The localized error message.
78 */
79 String _message;
80
81 /**
82 * The correction to be displayed for this error, or `null` if there is no
83 * correction information for this error.
84 */
85 String _correction;
86
87 /**
88 * The source in which the error occurred, or `null` if unknown.
89 */
90 final Source source;
91
92 /**
93 * The character offset from the beginning of the source (zero based) where
94 * the error occurred.
95 */
96 int offset = 0;
97
98 /**
99 * The number of characters from the offset to the end of the source which
100 * encompasses the compilation error.
101 */
102 int length = 0;
103
104 /**
105 * A flag indicating whether this error can be shown to be a non-issue because
106 * of the result of type propagation.
107 */
108 bool isStaticOnly = false;
109
110 /**
111 * Initialize a newly created analysis error. The error is associated with the
112 * given [source] and is located at the given [offset] with the given
113 * [length]. The error will have the given [errorCode] and the list of
114 * [arguments] will be used to complete the message.
115 */
116 AnalysisError(this.source, this.offset, this.length, this.errorCode,
117 [List<Object> arguments]) {
118 this._message = formatList(errorCode.message, arguments);
119 String correctionTemplate = errorCode.correction;
120 if (correctionTemplate != null) {
121 this._correction = formatList(correctionTemplate, arguments);
122 }
123 }
124
125 /**
126 * Initialize a newly created analysis error with given values.
127 */
128 AnalysisError.forValues(this.source, this.offset, this.length, this.errorCode,
129 this._message, this._correction);
130
131 /**
132 * Return the template used to create the correction to be displayed for this
133 * error, or `null` if there is no correction information for this error. The
134 * correction should indicate how the user can fix the error.
135 */
136 String get correction => _correction;
137
138 @override
139 int get hashCode {
140 int hashCode = offset;
141 hashCode ^= (_message != null) ? _message.hashCode : 0;
142 hashCode ^= (source != null) ? source.hashCode : 0;
143 return hashCode;
144 }
145
146 /**
147 * Return the message to be displayed for this error. The message should
148 * indicate what is wrong and why it is wrong.
149 */
150 String get message => _message;
151
152 @override
153 bool operator ==(Object other) {
154 if (identical(other, this)) {
155 return true;
156 }
157 // prepare other AnalysisError
158 if (other is AnalysisError) {
159 // Quick checks.
160 if (!identical(errorCode, other.errorCode)) {
161 return false;
162 }
163 if (offset != other.offset || length != other.length) {
164 return false;
165 }
166 if (isStaticOnly != other.isStaticOnly) {
167 return false;
168 }
169 // Deep checks.
170 if (_message != other._message) {
171 return false;
172 }
173 if (source != other.source) {
174 return false;
175 }
176 // OK
177 return true;
178 }
179 return false;
180 }
181
182 /**
183 * Return the value of the given [property], or `null` if the given property
184 * is not defined for this error.
185 */
186 Object/*=V*/ getProperty/*<V>*/(ErrorProperty/*<V>*/ property) => null;
187
188 @override
189 String toString() {
190 StringBuffer buffer = new StringBuffer();
191 buffer.write((source != null) ? source.fullName : "<unknown source>");
192 buffer.write("(");
193 buffer.write(offset);
194 buffer.write("..");
195 buffer.write(offset + length - 1);
196 buffer.write("): ");
197 //buffer.write("(" + lineNumber + ":" + columnNumber + "): ");
198 buffer.write(_message);
199 return buffer.toString();
200 }
201
202 /**
203 * Merge all of the errors in the lists in the given list of [errorLists] into
204 * a single list of errors.
205 */
206 static List<AnalysisError> mergeLists(List<List<AnalysisError>> errorLists) {
207 Set<AnalysisError> errors = new HashSet<AnalysisError>();
208 for (List<AnalysisError> errorList in errorLists) {
209 errors.addAll(errorList);
210 }
211 return errors.toList();
212 }
213 }
214
215 /**
216 * An object that listen for [AnalysisError]s being produced by the analysis
217 * engine.
218 */
219 abstract class AnalysisErrorListener {
220 /**
221 * An error listener that ignores errors that are reported to it.
222 */
223 static final AnalysisErrorListener NULL_LISTENER =
224 new AnalysisErrorListener_NULL_LISTENER();
225
226 /**
227 * This method is invoked when an [error] has been found by the analysis
228 * engine.
229 */
230 void onError(AnalysisError error);
231 }
232
233 /**
234 * An [AnalysisErrorListener] that ignores error.
235 */
236 class AnalysisErrorListener_NULL_LISTENER implements AnalysisErrorListener {
237 @override
238 void onError(AnalysisError event) {
239 // Ignore errors
240 }
241 }
242
243 /**
244 * An [AnalysisError] that can have arbitrary properties associated with it.
245 */
246 class AnalysisErrorWithProperties extends AnalysisError {
247 /**
248 * The properties associated with this error.
249 */
250 HashMap<ErrorProperty, Object> _propertyMap =
251 new HashMap<ErrorProperty, Object>();
252
253 /**
254 * Initialize a newly created analysis error. The error is associated with the
255 * given [source] and is located at the given [offset] with the given
256 * [length]. The error will have the given [errorCode] and the list of
257 * [arguments] will be used to complete the message.
258 */
259 AnalysisErrorWithProperties(
260 Source source, int offset, int length, ErrorCode errorCode,
261 [List<Object> arguments])
262 : super(source, offset, length, errorCode, arguments);
263
264 @override
265 Object/*=V*/ getProperty/*<V>*/(ErrorProperty/*<V>*/ property) =>
266 _propertyMap[property] as Object/*=V*/;
267
268 /**
269 * Set the value of the given [property] to the given [value]. Using a value
270 * of `null` will effectively remove the property from this error.
271 */
272 void setProperty/*<V>*/(ErrorProperty/*<V>*/ property, Object/*=V*/ value) {
273 _propertyMap[property] = value;
274 }
275 }
276 11
277 /** 12 /**
278 * The error codes used for errors in analysis options files. The convention for 13 * The error codes used for errors in analysis options files. The convention for
279 * this class is for the name of the error code to indicate the problem that 14 * this class is for the name of the error code to indicate the problem that
280 * caused the error to be generated and for the error message to explain what is 15 * caused the error to be generated and for the error message to explain what is
281 * wrong and, when appropriate, how the problem can be corrected. 16 * wrong and, when appropriate, how the problem can be corrected.
282 */ 17 */
283 class AnalysisOptionsErrorCode extends ErrorCode { 18 class AnalysisOptionsErrorCode extends ErrorCode {
284 /** 19 /**
285 * An error code indicating that there is a syntactic error in the file. 20 * An error code indicating that there is a syntactic error in the file.
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 : super(name, message, correction); 104 : super(name, message, correction);
370 105
371 @override 106 @override
372 ErrorSeverity get errorSeverity => ErrorSeverity.WARNING; 107 ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
373 108
374 @override 109 @override
375 ErrorType get type => ErrorType.STATIC_WARNING; 110 ErrorType get type => ErrorType.STATIC_WARNING;
376 } 111 }
377 112
378 /** 113 /**
379 * An [AnalysisErrorListener] that keeps track of whether any error has been
380 * reported to it.
381 */
382 class BooleanErrorListener implements AnalysisErrorListener {
383 /**
384 * A flag indicating whether an error has been reported to this listener.
385 */
386 bool _errorReported = false;
387
388 /**
389 * Return `true` if an error has been reported to this listener.
390 */
391 bool get errorReported => _errorReported;
392
393 @override
394 void onError(AnalysisError error) {
395 _errorReported = true;
396 }
397 }
398
399 /**
400 * The error codes used for compile time errors caused by constant evaluation 114 * The error codes used for compile time errors caused by constant evaluation
401 * that would throw an exception when run in checked mode. The client of the 115 * that would throw an exception when run in checked mode. The client of the
402 * analysis engine is responsible for determining how these errors should be 116 * analysis engine is responsible for determining how these errors should be
403 * presented to the user (for example, a command-line compiler might elect to 117 * presented to the user (for example, a command-line compiler might elect to
404 * treat these errors differently depending whether it is compiling it "checked" 118 * treat these errors differently depending whether it is compiling it "checked"
405 * mode). 119 * mode).
406 */ 120 */
407 class CheckedModeCompileTimeErrorCode extends ErrorCode { 121 class CheckedModeCompileTimeErrorCode extends ErrorCode {
408 // TODO(paulberry): improve the text of these error messages so that it's 122 // TODO(paulberry): improve the text of these error messages so that it's
409 // clear to the user that the error is coming from constant evaluation (and 123 // clear to the user that the error is coming from constant evaluation (and
(...skipping 2062 matching lines...) Expand 10 before | Expand all | Expand 10 after
2472 : super(name, message, correction); 2186 : super(name, message, correction);
2473 2187
2474 @override 2188 @override
2475 ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity; 2189 ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity;
2476 2190
2477 @override 2191 @override
2478 ErrorType get type => ErrorType.COMPILE_TIME_ERROR; 2192 ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
2479 } 2193 }
2480 2194
2481 /** 2195 /**
2482 * An error code associated with an [AnalysisError].
2483 *
2484 * Generally, we want to provide messages that consist of three sentences. From
2485 * the user's perspective these sentences should explain:
2486 * 1. what is wrong,
2487 * 2. why is it wrong, and
2488 * 3. how do I fix it.
2489 * However, we combine the first two in the [message] and the last in the
2490 * [correction].
2491 */
2492 abstract class ErrorCode {
2493 /**
2494 * Engine error code values.
2495 */
2496 static const List<ErrorCode> values = const [
2497 //
2498 // Manually generated. FWIW, this get's you most of the way there:
2499 //
2500 // > grep 'static const .*Code' (error.dart|parser|scanner.dart)
2501 // | awk '{print $3"."$4","}'
2502 //
2503 // error.dart:
2504 //
2505 AnalysisOptionsErrorCode.PARSE_ERROR,
2506 AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUES,
2507 AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUE,
2508 AnalysisOptionsWarningCode.UNSUPPORTED_VALUE,
2509 AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE,
2510 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
2511 CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
2512 CheckedModeCompileTimeErrorCode.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE,
2513 CheckedModeCompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
2514 CheckedModeCompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
2515 CheckedModeCompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
2516 CheckedModeCompileTimeErrorCode.VARIABLE_TYPE_MISMATCH,
2517 CompileTimeErrorCode.ACCESS_PRIVATE_ENUM_FIELD,
2518 CompileTimeErrorCode.AMBIGUOUS_EXPORT,
2519 CompileTimeErrorCode.ANNOTATION_WITH_NON_CLASS,
2520 CompileTimeErrorCode.ARGUMENT_DEFINITION_TEST_NON_PARAMETER,
2521 CompileTimeErrorCode.ASYNC_FOR_IN_WRONG_CONTEXT,
2522 CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT,
2523 CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE,
2524 CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME,
2525 CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME,
2526 CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME,
2527 CompileTimeErrorCode.CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS,
2528 CompileTimeErrorCode.COMPILE_TIME_CONSTANT_RAISES_EXCEPTION,
2529 CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD,
2530 CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER,
2531 CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD,
2532 CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD,
2533 CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS,
2534 CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER,
2535 CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION,
2536 CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST,
2537 CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN,
2538 CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER,
2539 CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD,
2540 CompileTimeErrorCode.CONST_DEFERRED_CLASS,
2541 CompileTimeErrorCode.CONST_FORMAL_PARAMETER,
2542 CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE,
2543 CompileTimeErrorCode
2544 .CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY,
2545 CompileTimeErrorCode.CONST_INSTANCE_FIELD,
2546 CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS,
2547 CompileTimeErrorCode.CONST_NOT_INITIALIZED,
2548 CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL,
2549 CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING,
2550 CompileTimeErrorCode.CONST_EVAL_TYPE_INT,
2551 CompileTimeErrorCode.CONST_EVAL_TYPE_NUM,
2552 CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
2553 CompileTimeErrorCode.CONST_EVAL_THROWS_IDBZE,
2554 CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETERS,
2555 CompileTimeErrorCode.CONST_WITH_NON_CONST,
2556 CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT,
2557 CompileTimeErrorCode.CONST_WITH_NON_TYPE,
2558 CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS,
2559 CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR,
2560 CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT,
2561 CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS,
2562 CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER,
2563 CompileTimeErrorCode.DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR,
2564 CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_DEFAULT,
2565 CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_NAME,
2566 CompileTimeErrorCode.DUPLICATE_DEFINITION,
2567 CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE,
2568 CompileTimeErrorCode.DUPLICATE_NAMED_ARGUMENT,
2569 CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY,
2570 CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY,
2571 CompileTimeErrorCode.EXTENDS_ENUM,
2572 CompileTimeErrorCode.EXTENDS_NON_CLASS,
2573 CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
2574 CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS,
2575 CompileTimeErrorCode.EXTRA_ARGUMENT_TO_ASSERT,
2576 CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS,
2577 CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS,
2578 CompileTimeErrorCode.FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER,
2579 CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES,
2580 CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR,
2581 CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR,
2582 CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR,
2583 CompileTimeErrorCode.GETTER_AND_METHOD_WITH_SAME_NAME,
2584 CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS,
2585 CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS,
2586 CompileTimeErrorCode.IMPLEMENTS_DYNAMIC,
2587 CompileTimeErrorCode.IMPLEMENTS_ENUM,
2588 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS,
2589 CompileTimeErrorCode.IMPLEMENTS_REPEATED,
2590 CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS,
2591 CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER,
2592 CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY,
2593 CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY,
2594 CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES,
2595 CompileTimeErrorCode.INITIALIZER_FOR_NON_EXISTENT_FIELD,
2596 CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD,
2597 CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD,
2598 CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD,
2599 CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_FACTORY,
2600 CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC,
2601 CompileTimeErrorCode.INSTANTIATE_ENUM,
2602 CompileTimeErrorCode.INVALID_ANNOTATION,
2603 CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY,
2604 CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC,
2605 CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR,
2606 CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER,
2607 CompileTimeErrorCode.INVALID_CONSTANT,
2608 CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME,
2609 CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS,
2610 CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS,
2611 CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_LIST,
2612 CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_MAP,
2613 CompileTimeErrorCode.INVALID_URI,
2614 CompileTimeErrorCode.LABEL_IN_OUTER_SCOPE,
2615 CompileTimeErrorCode.LABEL_UNDEFINED,
2616 CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME,
2617 CompileTimeErrorCode.METHOD_AND_GETTER_WITH_SAME_NAME,
2618 CompileTimeErrorCode.MISSING_CONST_IN_LIST_LITERAL,
2619 CompileTimeErrorCode.MISSING_CONST_IN_MAP_LITERAL,
2620 CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR,
2621 CompileTimeErrorCode.MIXIN_DEFERRED_CLASS,
2622 CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS,
2623 CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT,
2624 CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS,
2625 CompileTimeErrorCode.MIXIN_OF_ENUM,
2626 CompileTimeErrorCode.MIXIN_OF_NON_CLASS,
2627 CompileTimeErrorCode.MIXIN_REFERENCES_SUPER,
2628 CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS,
2629 CompileTimeErrorCode.MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS,
2630 CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS,
2631 CompileTimeErrorCode.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS,
2632 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT,
2633 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT,
2634 CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATEMENT,
2635 CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION,
2636 CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY,
2637 CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE,
2638 CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY,
2639 CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT,
2640 CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY,
2641 CompileTimeErrorCode.NON_CONSTANT_MAP_KEY,
2642 CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY,
2643 CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE,
2644 CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
2645 CompileTimeErrorCode.NON_CONSTANT_ANNOTATION_CONSTRUCTOR,
2646 CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER,
2647 CompileTimeErrorCode
2648 .NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY,
2649 CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS,
2650 CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR,
2651 CompileTimeErrorCode.OBJECT_CANNOT_EXTEND_ANOTHER_CLASS,
2652 CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR,
2653 CompileTimeErrorCode.PART_OF_NON_PART,
2654 CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER,
2655 CompileTimeErrorCode.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT,
2656 CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER,
2657 CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT,
2658 CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT,
2659 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT,
2660 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE,
2661 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS,
2662 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS,
2663 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_WITH,
2664 CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR,
2665 CompileTimeErrorCode.REDIRECT_TO_NON_CLASS,
2666 CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR,
2667 CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR,
2668 CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR,
2669 CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION,
2670 CompileTimeErrorCode.RETHROW_OUTSIDE_CATCH,
2671 CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR,
2672 CompileTimeErrorCode.RETURN_IN_GENERATOR,
2673 CompileTimeErrorCode.SHARED_DEFERRED_PREFIX,
2674 CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT,
2675 CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR,
2676 CompileTimeErrorCode.SUPER_INITIALIZER_IN_OBJECT,
2677 CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS,
2678 CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF,
2679 CompileTimeErrorCode.UNDEFINED_CLASS,
2680 CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER,
2681 CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT,
2682 CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER,
2683 CompileTimeErrorCode.URI_DOES_NOT_EXIST,
2684 CompileTimeErrorCode.URI_WITH_INTERPOLATION,
2685 CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR,
2686 CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS,
2687 CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER,
2688 CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR,
2689 CompileTimeErrorCode.YIELD_IN_NON_GENERATOR,
2690 HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
2691 HintCode.CAN_BE_NULL_AFTER_NULL_AWARE,
2692 HintCode.DEAD_CODE,
2693 HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH,
2694 HintCode.DEAD_CODE_ON_CATCH_SUBTYPE,
2695 HintCode.DEPRECATED_MEMBER_USE,
2696 HintCode.DUPLICATE_IMPORT,
2697 HintCode.DIVISION_OPTIMIZATION,
2698 HintCode.INVALID_FACTORY_ANNOTATION,
2699 HintCode.INVALID_FACTORY_METHOD_DECL,
2700 HintCode.INVALID_FACTORY_METHOD_IMPL,
2701 HintCode.IS_DOUBLE,
2702 HintCode.IS_INT,
2703 HintCode.IS_NOT_DOUBLE,
2704 HintCode.IS_NOT_INT,
2705 HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION,
2706 HintCode.INVALID_ASSIGNMENT,
2707 HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
2708 HintCode.MISSING_JS_LIB_ANNOTATION,
2709 HintCode.MISSING_REQUIRED_PARAM,
2710 HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS,
2711 HintCode.MISSING_RETURN,
2712 HintCode.NULL_AWARE_IN_CONDITION,
2713 HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER,
2714 HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD,
2715 HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD,
2716 HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER,
2717 HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE,
2718 HintCode.TYPE_CHECK_IS_NOT_NULL,
2719 HintCode.TYPE_CHECK_IS_NULL,
2720 HintCode.UNDEFINED_GETTER,
2721 HintCode.UNDEFINED_HIDDEN_NAME,
2722 HintCode.UNDEFINED_METHOD,
2723 HintCode.UNDEFINED_OPERATOR,
2724 HintCode.UNDEFINED_SETTER,
2725 HintCode.UNDEFINED_SHOWN_NAME,
2726 HintCode.UNNECESSARY_CAST,
2727 HintCode.UNNECESSARY_NO_SUCH_METHOD,
2728 HintCode.UNNECESSARY_TYPE_CHECK_FALSE,
2729 HintCode.UNNECESSARY_TYPE_CHECK_TRUE,
2730 HintCode.UNUSED_ELEMENT,
2731 HintCode.UNUSED_FIELD,
2732 HintCode.UNUSED_IMPORT,
2733 HintCode.UNUSED_CATCH_CLAUSE,
2734 HintCode.UNUSED_CATCH_STACK,
2735 HintCode.UNUSED_LOCAL_VARIABLE,
2736 HintCode.UNUSED_SHOWN_NAME,
2737 HintCode.USE_OF_VOID_RESULT,
2738 HintCode.FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE,
2739 HintCode.FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE,
2740 HintCode.PACKAGE_IMPORT_CONTAINS_DOT_DOT,
2741 HtmlErrorCode.PARSE_ERROR,
2742 HtmlWarningCode.INVALID_URI,
2743 HtmlWarningCode.URI_DOES_NOT_EXIST,
2744 StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS,
2745 StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS,
2746 StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE,
2747 StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE,
2748 StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE,
2749 StaticTypeWarningCode.INACCESSIBLE_SETTER,
2750 StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE,
2751 StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER,
2752 StaticTypeWarningCode.INVALID_ASSIGNMENT,
2753 StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION,
2754 StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION,
2755 StaticTypeWarningCode.NON_BOOL_CONDITION,
2756 StaticTypeWarningCode.NON_BOOL_EXPRESSION,
2757 StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION,
2758 StaticTypeWarningCode.NON_BOOL_OPERAND,
2759 StaticTypeWarningCode.NON_NULLABLE_FIELD_NOT_INITIALIZED,
2760 StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT,
2761 StaticTypeWarningCode.RETURN_OF_INVALID_TYPE,
2762 StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS,
2763 StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND,
2764 StaticTypeWarningCode.UNDEFINED_ENUM_CONSTANT,
2765 StaticTypeWarningCode.UNDEFINED_FUNCTION,
2766 StaticTypeWarningCode.UNDEFINED_GETTER,
2767 StaticTypeWarningCode.UNDEFINED_METHOD,
2768 StaticTypeWarningCode.UNDEFINED_METHOD_WITH_CONSTRUCTOR,
2769 StaticTypeWarningCode.UNDEFINED_OPERATOR,
2770 StaticTypeWarningCode.UNDEFINED_SETTER,
2771 StaticTypeWarningCode.UNDEFINED_SUPER_GETTER,
2772 StaticTypeWarningCode.UNDEFINED_SUPER_METHOD,
2773 StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR,
2774 StaticTypeWarningCode.UNDEFINED_SUPER_SETTER,
2775 StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER,
2776 StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS,
2777 StaticTypeWarningCode.YIELD_OF_INVALID_TYPE,
2778 StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE,
2779 StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE,
2780 StaticWarningCode.AMBIGUOUS_IMPORT,
2781 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
2782 StaticWarningCode.ASSIGNMENT_TO_CONST,
2783 StaticWarningCode.ASSIGNMENT_TO_FINAL,
2784 StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
2785 StaticWarningCode.ASSIGNMENT_TO_FUNCTION,
2786 StaticWarningCode.ASSIGNMENT_TO_METHOD,
2787 StaticWarningCode.ASSIGNMENT_TO_TYPE,
2788 StaticWarningCode.CASE_BLOCK_NOT_TERMINATED,
2789 StaticWarningCode.CAST_TO_NON_TYPE,
2790 StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
2791 StaticWarningCode.CONFLICTING_DART_IMPORT,
2792 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER,
2793 StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER,
2794 StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2,
2795 StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER,
2796 StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER,
2797 StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER,
2798 StaticWarningCode.CONST_WITH_ABSTRACT_CLASS,
2799 StaticWarningCode.EQUAL_KEYS_IN_MAP,
2800 StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAMED,
2801 StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS,
2802 StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
2803 StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
2804 StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE,
2805 StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE,
2806 StaticWarningCode.FINAL_NOT_INITIALIZED,
2807 StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1,
2808 StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2,
2809 StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS,
2810 StaticWarningCode.FUNCTION_WITHOUT_CALL,
2811 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED,
2812 StaticWarningCode.IMPORT_OF_NON_LIBRARY,
2813 StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD,
2814 StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC,
2815 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE,
2816 StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE,
2817 StaticWarningCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETERS,
2818 StaticWarningCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETER_BOUND,
2819 StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE,
2820 StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE,
2821 StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE,
2822 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED,
2823 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL,
2824 StaticWarningCode.INVALID_OVERRIDE_NAMED,
2825 StaticWarningCode.INVALID_OVERRIDE_POSITIONAL,
2826 StaticWarningCode.INVALID_OVERRIDE_REQUIRED,
2827 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE,
2828 StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
2829 StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
2830 StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
2831 StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
2832 StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE,
2833 StaticWarningCode.MIXED_RETURN_TYPES,
2834 StaticWarningCode.NEW_WITH_ABSTRACT_CLASS,
2835 StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS,
2836 StaticWarningCode.NEW_WITH_NON_TYPE,
2837 StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR,
2838 StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT,
2839 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS,
2840 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR,
2841 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
2842 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE,
2843 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO,
2844 StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE,
2845 StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR,
2846 StaticWarningCode.NON_VOID_RETURN_FOR_SETTER,
2847 StaticWarningCode.NOT_A_TYPE,
2848 StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS,
2849 StaticWarningCode.PART_OF_DIFFERENT_LIBRARY,
2850 StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE,
2851 StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE,
2852 StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR,
2853 StaticWarningCode.REDIRECT_TO_NON_CLASS,
2854 StaticWarningCode.RETURN_WITHOUT_VALUE,
2855 StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER,
2856 StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE,
2857 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS,
2858 StaticWarningCode.TYPE_TEST_WITH_NON_TYPE,
2859 StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME,
2860 StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC,
2861 StaticWarningCode.UNDEFINED_CLASS,
2862 StaticWarningCode.UNDEFINED_CLASS_BOOLEAN,
2863 StaticWarningCode.UNDEFINED_GETTER,
2864 StaticWarningCode.UNDEFINED_IDENTIFIER,
2865 StaticWarningCode.UNDEFINED_NAMED_PARAMETER,
2866 StaticWarningCode.UNDEFINED_SETTER,
2867 StaticWarningCode.UNDEFINED_STATIC_METHOD_OR_GETTER,
2868 StaticWarningCode.UNDEFINED_SUPER_GETTER,
2869 StaticWarningCode.UNDEFINED_SUPER_SETTER,
2870 StaticWarningCode.VOID_RETURN_FOR_GETTER,
2871 StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
2872 StrongModeCode.ASSIGNMENT_CAST,
2873 StrongModeCode.DOWN_CAST_COMPOSITE,
2874 StrongModeCode.DOWN_CAST_IMPLICIT,
2875 StrongModeCode.DYNAMIC_CAST,
2876 StrongModeCode.DYNAMIC_INVOKE,
2877 StrongModeCode.IMPLICIT_DYNAMIC_FIELD,
2878 StrongModeCode.IMPLICIT_DYNAMIC_FUNCTION,
2879 StrongModeCode.IMPLICIT_DYNAMIC_INVOKE,
2880 StrongModeCode.IMPLICIT_DYNAMIC_LIST_LITERAL,
2881 StrongModeCode.IMPLICIT_DYNAMIC_MAP_LITERAL,
2882 StrongModeCode.IMPLICIT_DYNAMIC_METHOD,
2883 StrongModeCode.IMPLICIT_DYNAMIC_PARAMETER,
2884 StrongModeCode.IMPLICIT_DYNAMIC_RETURN,
2885 StrongModeCode.IMPLICIT_DYNAMIC_TYPE,
2886 StrongModeCode.IMPLICIT_DYNAMIC_VARIABLE,
2887 StrongModeCode.INFERRED_TYPE,
2888 StrongModeCode.INFERRED_TYPE_ALLOCATION,
2889 StrongModeCode.INFERRED_TYPE_CLOSURE,
2890 StrongModeCode.INFERRED_TYPE_LITERAL,
2891 StrongModeCode.INVALID_FIELD_OVERRIDE,
2892 StrongModeCode.INVALID_METHOD_OVERRIDE,
2893 StrongModeCode.INVALID_METHOD_OVERRIDE_FROM_BASE,
2894 StrongModeCode.INVALID_METHOD_OVERRIDE_FROM_MIXIN,
2895 StrongModeCode.INVALID_PARAMETER_DECLARATION,
2896 StrongModeCode.INVALID_SUPER_INVOCATION,
2897 StrongModeCode.NON_GROUND_TYPE_CHECK_INFO,
2898 StrongModeCode.STATIC_TYPE_ERROR,
2899 StrongModeCode.UNSAFE_BLOCK_CLOSURE_INFERENCE,
2900
2901 TodoCode.TODO,
2902
2903 //
2904 // parser.dart:
2905 //
2906 ParserErrorCode.ABSTRACT_CLASS_MEMBER,
2907 ParserErrorCode.ABSTRACT_ENUM,
2908 ParserErrorCode.ABSTRACT_STATIC_METHOD,
2909 ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION,
2910 ParserErrorCode.ABSTRACT_TOP_LEVEL_VARIABLE,
2911 ParserErrorCode.ABSTRACT_TYPEDEF,
2912 ParserErrorCode.ANNOTATION_ON_ENUM_CONSTANT,
2913 ParserErrorCode.ASYNC_KEYWORD_USED_AS_IDENTIFIER,
2914 ParserErrorCode.ASYNC_NOT_SUPPORTED,
2915 ParserErrorCode.BREAK_OUTSIDE_OF_LOOP,
2916 ParserErrorCode.CLASS_IN_CLASS,
2917 ParserErrorCode.COLON_IN_PLACE_OF_IN,
2918 ParserErrorCode.CONST_AND_FINAL,
2919 ParserErrorCode.CONST_AND_VAR,
2920 ParserErrorCode.CONST_CLASS,
2921 ParserErrorCode.CONST_CONSTRUCTOR_WITH_BODY,
2922 ParserErrorCode.CONST_ENUM,
2923 ParserErrorCode.CONST_FACTORY,
2924 ParserErrorCode.CONST_METHOD,
2925 ParserErrorCode.CONST_TYPEDEF,
2926 ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE,
2927 ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP,
2928 ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE,
2929 ParserErrorCode.DEPRECATED_CLASS_TYPE_ALIAS,
2930 ParserErrorCode.DIRECTIVE_AFTER_DECLARATION,
2931 ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT,
2932 ParserErrorCode.DUPLICATED_MODIFIER,
2933 ParserErrorCode.EMPTY_ENUM_BODY,
2934 ParserErrorCode.ENUM_IN_CLASS,
2935 ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND,
2936 ParserErrorCode.EXPECTED_CASE_OR_DEFAULT,
2937 ParserErrorCode.EXPECTED_CLASS_MEMBER,
2938 ParserErrorCode.EXPECTED_EXECUTABLE,
2939 ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL,
2940 ParserErrorCode.EXPECTED_STRING_LITERAL,
2941 ParserErrorCode.EXPECTED_TOKEN,
2942 ParserErrorCode.EXPECTED_TYPE_NAME,
2943 ParserErrorCode.EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
2944 ParserErrorCode.EXTERNAL_AFTER_CONST,
2945 ParserErrorCode.EXTERNAL_AFTER_FACTORY,
2946 ParserErrorCode.EXTERNAL_AFTER_STATIC,
2947 ParserErrorCode.EXTERNAL_CLASS,
2948 ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY,
2949 ParserErrorCode.EXTERNAL_ENUM,
2950 ParserErrorCode.EXTERNAL_FIELD,
2951 ParserErrorCode.EXTERNAL_GETTER_WITH_BODY,
2952 ParserErrorCode.EXTERNAL_METHOD_WITH_BODY,
2953 ParserErrorCode.EXTERNAL_OPERATOR_WITH_BODY,
2954 ParserErrorCode.EXTERNAL_SETTER_WITH_BODY,
2955 ParserErrorCode.EXTERNAL_TYPEDEF,
2956 ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION,
2957 ParserErrorCode.FACTORY_WITH_INITIALIZERS,
2958 ParserErrorCode.FACTORY_WITHOUT_BODY,
2959 ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR,
2960 ParserErrorCode.FINAL_AND_VAR,
2961 ParserErrorCode.FINAL_CLASS,
2962 ParserErrorCode.FINAL_CONSTRUCTOR,
2963 ParserErrorCode.FINAL_ENUM,
2964 ParserErrorCode.FINAL_METHOD,
2965 ParserErrorCode.FINAL_TYPEDEF,
2966 ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR,
2967 ParserErrorCode.GETTER_IN_FUNCTION,
2968 ParserErrorCode.GETTER_WITH_PARAMETERS,
2969 ParserErrorCode.ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE,
2970 ParserErrorCode.IMPLEMENTS_BEFORE_EXTENDS,
2971 ParserErrorCode.IMPLEMENTS_BEFORE_WITH,
2972 ParserErrorCode.IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
2973 ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH,
2974 ParserErrorCode.INVALID_AWAIT_IN_FOR,
2975 ParserErrorCode.INVALID_CODE_POINT,
2976 ParserErrorCode.INVALID_COMMENT_REFERENCE,
2977 ParserErrorCode.INVALID_HEX_ESCAPE,
2978 ParserErrorCode.INVALID_LITERAL_IN_CONFIGURATION,
2979 ParserErrorCode.INVALID_OPERATOR,
2980 ParserErrorCode.INVALID_OPERATOR_FOR_SUPER,
2981 ParserErrorCode.INVALID_STAR_AFTER_ASYNC,
2982 ParserErrorCode.INVALID_SYNC,
2983 ParserErrorCode.INVALID_UNICODE_ESCAPE,
2984 ParserErrorCode.LIBRARY_DIRECTIVE_NOT_FIRST,
2985 ParserErrorCode.LOCAL_FUNCTION_DECLARATION_MODIFIER,
2986 ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR,
2987 ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER,
2988 ParserErrorCode.MISSING_CATCH_OR_FINALLY,
2989 ParserErrorCode.MISSING_CLASS_BODY,
2990 ParserErrorCode.MISSING_CLOSING_PARENTHESIS,
2991 ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE,
2992 ParserErrorCode.MISSING_ENUM_BODY,
2993 ParserErrorCode.MISSING_EXPRESSION_IN_INITIALIZER,
2994 ParserErrorCode.MISSING_EXPRESSION_IN_THROW,
2995 ParserErrorCode.MISSING_FUNCTION_BODY,
2996 ParserErrorCode.MISSING_FUNCTION_PARAMETERS,
2997 ParserErrorCode.MISSING_METHOD_PARAMETERS,
2998 ParserErrorCode.MISSING_GET,
2999 ParserErrorCode.MISSING_IDENTIFIER,
3000 ParserErrorCode.MISSING_INITIALIZER,
3001 ParserErrorCode.MISSING_KEYWORD_OPERATOR,
3002 ParserErrorCode.MISSING_NAME_IN_LIBRARY_DIRECTIVE,
3003 ParserErrorCode.MISSING_NAME_IN_PART_OF_DIRECTIVE,
3004 ParserErrorCode.MISSING_PREFIX_IN_DEFERRED_IMPORT,
3005 ParserErrorCode.MISSING_STAR_AFTER_SYNC,
3006 ParserErrorCode.MISSING_STATEMENT,
3007 ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP,
3008 ParserErrorCode.MISSING_TYPEDEF_PARAMETERS,
3009 ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH,
3010 ParserErrorCode.MIXED_PARAMETER_GROUPS,
3011 ParserErrorCode.MULTIPLE_EXTENDS_CLAUSES,
3012 ParserErrorCode.MULTIPLE_IMPLEMENTS_CLAUSES,
3013 ParserErrorCode.MULTIPLE_LIBRARY_DIRECTIVES,
3014 ParserErrorCode.MULTIPLE_NAMED_PARAMETER_GROUPS,
3015 ParserErrorCode.MULTIPLE_PART_OF_DIRECTIVES,
3016 ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS,
3017 ParserErrorCode.MULTIPLE_VARIABLES_IN_FOR_EACH,
3018 ParserErrorCode.MULTIPLE_WITH_CLAUSES,
3019 ParserErrorCode.NAMED_FUNCTION_EXPRESSION,
3020 ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP,
3021 ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE,
3022 ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE,
3023 ParserErrorCode.NON_CONSTRUCTOR_FACTORY,
3024 ParserErrorCode.NON_IDENTIFIER_LIBRARY_NAME,
3025 ParserErrorCode.NON_PART_OF_DIRECTIVE_IN_PART,
3026 ParserErrorCode.NON_STRING_LITERAL_AS_URI,
3027 ParserErrorCode.NON_USER_DEFINABLE_OPERATOR,
3028 ParserErrorCode.NORMAL_BEFORE_OPTIONAL_PARAMETERS,
3029 ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT,
3030 ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP,
3031 ParserErrorCode.REDIRECTING_CONSTRUCTOR_WITH_BODY,
3032 ParserErrorCode.REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR,
3033 ParserErrorCode.SETTER_IN_FUNCTION,
3034 ParserErrorCode.STATIC_AFTER_CONST,
3035 ParserErrorCode.STATIC_AFTER_FINAL,
3036 ParserErrorCode.STATIC_AFTER_VAR,
3037 ParserErrorCode.STATIC_CONSTRUCTOR,
3038 ParserErrorCode.STATIC_GETTER_WITHOUT_BODY,
3039 ParserErrorCode.STATIC_OPERATOR,
3040 ParserErrorCode.STATIC_SETTER_WITHOUT_BODY,
3041 ParserErrorCode.STATIC_TOP_LEVEL_DECLARATION,
3042 ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE,
3043 ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES,
3044 ParserErrorCode.TOP_LEVEL_OPERATOR,
3045 ParserErrorCode.TYPEDEF_IN_CLASS,
3046 ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP,
3047 ParserErrorCode.UNEXPECTED_TOKEN,
3048 ParserErrorCode.WITH_BEFORE_EXTENDS,
3049 ParserErrorCode.WITH_WITHOUT_EXTENDS,
3050 ParserErrorCode.WRONG_SEPARATOR_FOR_NAMED_PARAMETER,
3051 ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER,
3052 ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP,
3053 ParserErrorCode.VAR_AND_TYPE,
3054 ParserErrorCode.VAR_AS_TYPE_NAME,
3055 ParserErrorCode.VAR_CLASS,
3056 ParserErrorCode.VAR_ENUM,
3057 ParserErrorCode.VAR_RETURN_TYPE,
3058 ParserErrorCode.VAR_TYPEDEF,
3059 ParserErrorCode.VOID_PARAMETER,
3060 ParserErrorCode.VOID_VARIABLE,
3061
3062 //
3063 // scanner.dart:
3064 //
3065 ScannerErrorCode.ILLEGAL_CHARACTER,
3066 ScannerErrorCode.MISSING_DIGIT,
3067 ScannerErrorCode.MISSING_HEX_DIGIT,
3068 ScannerErrorCode.MISSING_QUOTE,
3069 ScannerErrorCode.UNABLE_GET_CONTENT,
3070 ScannerErrorCode.UNTERMINATED_MULTI_LINE_COMMENT,
3071 ScannerErrorCode.UNTERMINATED_STRING_LITERAL,
3072 ];
3073
3074 /**
3075 * The lazy initialized map from [uniqueName] to the [ErrorCode] instance.
3076 */
3077 static HashMap<String, ErrorCode> _uniqueNameToCodeMap;
3078
3079 /**
3080 * An empty list of error codes.
3081 */
3082 static const List<ErrorCode> EMPTY_LIST = const <ErrorCode>[];
3083
3084 /**
3085 * The name of the error code.
3086 */
3087 final String name;
3088
3089 /**
3090 * The template used to create the message to be displayed for this error. The
3091 * message should indicate what is wrong and why it is wrong.
3092 */
3093 final String message;
3094
3095 /**
3096 * The template used to create the correction to be displayed for this error,
3097 * or `null` if there is no correction information for this error. The
3098 * correction should indicate how the user can fix the error.
3099 */
3100 final String correction;
3101
3102 /**
3103 * Initialize a newly created error code to have the given [name]. The message
3104 * associated with the error will be created from the given [message]
3105 * template. The correction associated with the error will be created from the
3106 * given [correction] template.
3107 */
3108 const ErrorCode(this.name, this.message, [this.correction]);
3109
3110 /**
3111 * The severity of the error.
3112 */
3113 ErrorSeverity get errorSeverity;
3114
3115 /**
3116 * The type of the error.
3117 */
3118 ErrorType get type;
3119
3120 /**
3121 * The unique name of this error code.
3122 */
3123 String get uniqueName => "$runtimeType.$name";
3124
3125 @override
3126 String toString() => uniqueName;
3127
3128 /**
3129 * Return the [ErrorCode] with the given [uniqueName], or `null` if not
3130 * found.
3131 */
3132 static ErrorCode byUniqueName(String uniqueName) {
3133 if (_uniqueNameToCodeMap == null) {
3134 _uniqueNameToCodeMap = new HashMap<String, ErrorCode>();
3135 for (ErrorCode errorCode in values) {
3136 _uniqueNameToCodeMap[errorCode.uniqueName] = errorCode;
3137 }
3138 }
3139 return _uniqueNameToCodeMap[uniqueName];
3140 }
3141 }
3142
3143 /**
3144 * The properties that can be associated with an [AnalysisError].
3145 */
3146 class ErrorProperty<V> extends Enum<ErrorProperty> {
3147 /**
3148 * A property whose value is a list of [FieldElement]s that are final, but
3149 * not initialized by a constructor.
3150 */
3151 static const ErrorProperty<List<FieldElement>> NOT_INITIALIZED_FIELDS =
3152 const ErrorProperty<List<FieldElement>>('NOT_INITIALIZED_FIELDS', 0);
3153
3154 /**
3155 * A property whose value is the name of the library that is used by all
3156 * of the "part of" directives, so should be used in the "library" directive.
3157 * Is `null` if there is no a single name used by all of the parts.
3158 */
3159 static const ErrorProperty<String> PARTS_LIBRARY_NAME =
3160 const ErrorProperty<String>('PARTS_LIBRARY_NAME', 1);
3161
3162 /**
3163 * A property whose value is a list of [ExecutableElement] that should
3164 * be but are not implemented by a concrete class.
3165 */
3166 static const ErrorProperty<List<ExecutableElement>> UNIMPLEMENTED_METHODS =
3167 const ErrorProperty<List<ExecutableElement>>('UNIMPLEMENTED_METHODS', 2);
3168
3169 static const List<ErrorProperty> values = const [
3170 NOT_INITIALIZED_FIELDS,
3171 PARTS_LIBRARY_NAME,
3172 UNIMPLEMENTED_METHODS
3173 ];
3174
3175 const ErrorProperty(String name, int ordinal) : super(name, ordinal);
3176 }
3177
3178 /**
3179 * An object used to create analysis errors and report then to an error
3180 * listener.
3181 */
3182 class ErrorReporter {
3183 /**
3184 * The error listener to which errors will be reported.
3185 */
3186 final AnalysisErrorListener _errorListener;
3187
3188 /**
3189 * The default source to be used when reporting errors.
3190 */
3191 final Source _defaultSource;
3192
3193 /**
3194 * The source to be used when reporting errors.
3195 */
3196 Source _source;
3197
3198 /**
3199 * Initialize a newly created error reporter that will report errors to the
3200 * given [_errorListener]. Errors will be reported against the
3201 * [_defaultSource] unless another source is provided later.
3202 */
3203 ErrorReporter(this._errorListener, this._defaultSource) {
3204 if (_errorListener == null) {
3205 throw new ArgumentError("An error listener must be provided");
3206 } else if (_defaultSource == null) {
3207 throw new ArgumentError("A default source must be provided");
3208 }
3209 this._source = _defaultSource;
3210 }
3211
3212 Source get source => _source;
3213
3214 /**
3215 * Set the source to be used when reporting errors to the given [source].
3216 * Setting the source to `null` will cause the default source to be used.
3217 */
3218 void set source(Source source) {
3219 this._source = source ?? _defaultSource;
3220 }
3221
3222 /**
3223 * Creates an error with properties with the given [errorCode] and
3224 * [arguments]. The [node] is used to compute the location of the error.
3225 */
3226 AnalysisErrorWithProperties newErrorWithProperties(
3227 ErrorCode errorCode, AstNode node, List<Object> arguments) =>
3228 new AnalysisErrorWithProperties(
3229 _source, node.offset, node.length, errorCode, arguments);
3230
3231 /**
3232 * Report the given [error].
3233 */
3234 void reportError(AnalysisError error) {
3235 _errorListener.onError(error);
3236 }
3237
3238 /**
3239 * Report an error with the given [errorCode] and [arguments]. The [element]
3240 * is used to compute the location of the error.
3241 */
3242 void reportErrorForElement(ErrorCode errorCode, Element element,
3243 [List<Object> arguments]) {
3244 int length = 0;
3245 if (element is ImportElement) {
3246 length = 6; // 'import'.length
3247 } else if (element is ExportElement) {
3248 length = 6; // 'export'.length
3249 } else {
3250 length = element.nameLength;
3251 }
3252 reportErrorForOffset(errorCode, element.nameOffset, length, arguments);
3253 }
3254
3255 /**
3256 * Report an error with the given [errorCode] and [arguments].
3257 * The [node] is used to compute the location of the error.
3258 *
3259 * If the arguments contain the names of two or more types, the method
3260 * [reportTypeErrorForNode] should be used and the types
3261 * themselves (rather than their names) should be passed as arguments.
3262 */
3263 void reportErrorForNode(ErrorCode errorCode, AstNode node,
3264 [List<Object> arguments]) {
3265 reportErrorForOffset(errorCode, node.offset, node.length, arguments);
3266 }
3267
3268 /**
3269 * Report an error with the given [errorCode] and [arguments]. The location of
3270 * the error is specified by the given [offset] and [length].
3271 */
3272 void reportErrorForOffset(ErrorCode errorCode, int offset, int length,
3273 [List<Object> arguments]) {
3274 _errorListener.onError(
3275 new AnalysisError(_source, offset, length, errorCode, arguments));
3276 }
3277
3278 /**
3279 * Report an error with the given [errorCode] and [arguments]. The location of
3280 * the error is specified by the given [span].
3281 */
3282 void reportErrorForSpan(ErrorCode errorCode, SourceSpan span,
3283 [List<Object> arguments]) {
3284 reportErrorForOffset(errorCode, span.start.offset, span.length, arguments);
3285 }
3286
3287 /**
3288 * Report an error with the given [errorCode] and [arguments]. The [token] is
3289 * used to compute the location of the error.
3290 */
3291 void reportErrorForToken(ErrorCode errorCode, Token token,
3292 [List<Object> arguments]) {
3293 reportErrorForOffset(errorCode, token.offset, token.length, arguments);
3294 }
3295
3296 /**
3297 * Report an error with the given [errorCode] and [arguments]. The [node] is
3298 * used to compute the location of the error. The arguments are expected to
3299 * contain two or more types. Convert the types into strings by using the
3300 * display names of the types, unless there are two or more types with the
3301 * same names, in which case the extended display names of the types will be
3302 * used in order to clarify the message.
3303 *
3304 * If there are not two or more types in the argument list, the method
3305 * [reportErrorForNode] should be used instead.
3306 */
3307 void reportTypeErrorForNode(
3308 ErrorCode errorCode, AstNode node, List<Object> arguments) {
3309 _convertTypeNames(arguments);
3310 reportErrorForOffset(errorCode, node.offset, node.length, arguments);
3311 }
3312
3313 /**
3314 * Given an array of [arguments] that is expected to contain two or more
3315 * types, convert the types into strings by using the display names of the
3316 * types, unless there are two or more types with the same names, in which
3317 * case the extended display names of the types will be used in order to
3318 * clarify the message.
3319 */
3320 void _convertTypeNames(List<Object> arguments) {
3321 String displayName(DartType type) {
3322 if (type is FunctionType) {
3323 String name = type.name;
3324 if (name != null && name.length > 0) {
3325 StringBuffer buffer = new StringBuffer();
3326 buffer.write(name);
3327 (type as TypeImpl).appendTo(buffer);
3328 return buffer.toString();
3329 }
3330 }
3331 return type.displayName;
3332 }
3333
3334 if (_hasEqualTypeNames(arguments)) {
3335 int count = arguments.length;
3336 for (int i = 0; i < count; i++) {
3337 Object argument = arguments[i];
3338 if (argument is DartType) {
3339 Element element = argument.element;
3340 if (element == null) {
3341 arguments[i] = displayName(argument);
3342 } else {
3343 arguments[i] =
3344 element.getExtendedDisplayName(displayName(argument));
3345 }
3346 }
3347 }
3348 } else {
3349 int count = arguments.length;
3350 for (int i = 0; i < count; i++) {
3351 Object argument = arguments[i];
3352 if (argument is DartType) {
3353 arguments[i] = displayName(argument);
3354 }
3355 }
3356 }
3357 }
3358
3359 /**
3360 * Return `true` if the given array of [arguments] contains two or more types
3361 * with the same display name.
3362 */
3363 bool _hasEqualTypeNames(List<Object> arguments) {
3364 int count = arguments.length;
3365 HashSet<String> typeNames = new HashSet<String>();
3366 for (int i = 0; i < count; i++) {
3367 Object argument = arguments[i];
3368 if (argument is DartType && !typeNames.add(argument.displayName)) {
3369 return true;
3370 }
3371 }
3372 return false;
3373 }
3374 }
3375
3376 /**
3377 * The severity of an [ErrorCode].
3378 */
3379 class ErrorSeverity extends Enum<ErrorSeverity> {
3380 /**
3381 * The severity representing a non-error. This is never used for any error
3382 * code, but is useful for clients.
3383 */
3384 static const ErrorSeverity NONE = const ErrorSeverity('NONE', 0, " ", "none");
3385
3386 /**
3387 * The severity representing an informational level analysis issue.
3388 */
3389 static const ErrorSeverity INFO = const ErrorSeverity('INFO', 1, "I", "info");
3390
3391 /**
3392 * The severity representing a warning. Warnings can become errors if the `-We rror` command
3393 * line flag is specified.
3394 */
3395 static const ErrorSeverity WARNING =
3396 const ErrorSeverity('WARNING', 2, "W", "warning");
3397
3398 /**
3399 * The severity representing an error.
3400 */
3401 static const ErrorSeverity ERROR =
3402 const ErrorSeverity('ERROR', 3, "E", "error");
3403
3404 static const List<ErrorSeverity> values = const [NONE, INFO, WARNING, ERROR];
3405
3406 /**
3407 * The name of the severity used when producing machine output.
3408 */
3409 final String machineCode;
3410
3411 /**
3412 * The name of the severity used when producing readable output.
3413 */
3414 final String displayName;
3415
3416 /**
3417 * Initialize a newly created severity with the given names.
3418 *
3419 * Parameters:
3420 * 0: the name of the severity used when producing machine output
3421 * 1: the name of the severity used when producing readable output
3422 */
3423 const ErrorSeverity(
3424 String name, int ordinal, this.machineCode, this.displayName)
3425 : super(name, ordinal);
3426
3427 /**
3428 * Return the severity constant that represents the greatest severity.
3429 */
3430 ErrorSeverity max(ErrorSeverity severity) =>
3431 this.ordinal >= severity.ordinal ? this : severity;
3432 }
3433
3434 /**
3435 * The type of an [ErrorCode].
3436 */
3437 class ErrorType extends Enum<ErrorType> {
3438 /**
3439 * Task (todo) comments in user code.
3440 */
3441 static const ErrorType TODO = const ErrorType('TODO', 0, ErrorSeverity.INFO);
3442
3443 /**
3444 * Extra analysis run over the code to follow best practices, which are not in
3445 * the Dart Language Specification.
3446 */
3447 static const ErrorType HINT = const ErrorType('HINT', 1, ErrorSeverity.INFO);
3448
3449 /**
3450 * Compile-time errors are errors that preclude execution. A compile time
3451 * error must be reported by a Dart compiler before the erroneous code is
3452 * executed.
3453 */
3454 static const ErrorType COMPILE_TIME_ERROR =
3455 const ErrorType('COMPILE_TIME_ERROR', 2, ErrorSeverity.ERROR);
3456
3457 /**
3458 * Checked mode compile-time errors are errors that preclude execution in
3459 * checked mode.
3460 */
3461 static const ErrorType CHECKED_MODE_COMPILE_TIME_ERROR = const ErrorType(
3462 'CHECKED_MODE_COMPILE_TIME_ERROR', 3, ErrorSeverity.ERROR);
3463
3464 /**
3465 * Static warnings are those warnings reported by the static checker. They
3466 * have no effect on execution. Static warnings must be provided by Dart
3467 * compilers used during development.
3468 */
3469 static const ErrorType STATIC_WARNING =
3470 const ErrorType('STATIC_WARNING', 4, ErrorSeverity.WARNING);
3471
3472 /**
3473 * Many, but not all, static warnings relate to types, in which case they are
3474 * known as static type warnings.
3475 */
3476 static const ErrorType STATIC_TYPE_WARNING =
3477 const ErrorType('STATIC_TYPE_WARNING', 5, ErrorSeverity.WARNING);
3478
3479 /**
3480 * Syntactic errors are errors produced as a result of input that does not
3481 * conform to the grammar.
3482 */
3483 static const ErrorType SYNTACTIC_ERROR =
3484 const ErrorType('SYNTACTIC_ERROR', 6, ErrorSeverity.ERROR);
3485
3486 /**
3487 * Lint warnings describe style and best practice recommendations that can be
3488 * used to formalize a project's style guidelines.
3489 */
3490 static const ErrorType LINT = const ErrorType('LINT', 7, ErrorSeverity.INFO);
3491
3492 static const List<ErrorType> values = const [
3493 TODO,
3494 HINT,
3495 COMPILE_TIME_ERROR,
3496 CHECKED_MODE_COMPILE_TIME_ERROR,
3497 STATIC_WARNING,
3498 STATIC_TYPE_WARNING,
3499 SYNTACTIC_ERROR,
3500 LINT
3501 ];
3502
3503 /**
3504 * The severity of this type of error.
3505 */
3506 final ErrorSeverity severity;
3507
3508 /**
3509 * Initialize a newly created error type to have the given [name] and
3510 * [severity].
3511 */
3512 const ErrorType(String name, int ordinal, this.severity)
3513 : super(name, ordinal);
3514
3515 String get displayName => name.toLowerCase().replaceAll('_', ' ');
3516 }
3517
3518 /**
3519 * The hints and coding recommendations for best practices which are not 2196 * The hints and coding recommendations for best practices which are not
3520 * mentioned in the Dart Language Specification. 2197 * mentioned in the Dart Language Specification.
3521 */ 2198 */
3522 class HintCode extends ErrorCode { 2199 class HintCode extends ErrorCode {
3523 /** 2200 /**
3524 * This hint is generated anywhere where the 2201 * This hint is generated anywhere where the
3525 * [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE] would have been generated, 2202 * [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE] would have been generated,
3526 * if we used propagated information for the warnings. 2203 * if we used propagated information for the warnings.
3527 * 2204 *
3528 * Parameters: 2205 * Parameters:
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after
4288 * static types of both of <i>e<sub>1</sub></i> and <i>e<sub>2</sub></i> may 2965 * static types of both of <i>e<sub>1</sub></i> and <i>e<sub>2</sub></i> may
4289 * not be assigned to bool. 2966 * not be assigned to bool.
4290 * 2967 *
4291 * Parameters: 2968 * Parameters:
4292 * 0: the lexeme of the logical operator 2969 * 0: the lexeme of the logical operator
4293 */ 2970 */
4294 static const StaticTypeWarningCode NON_BOOL_OPERAND = 2971 static const StaticTypeWarningCode NON_BOOL_OPERAND =
4295 const StaticTypeWarningCode('NON_BOOL_OPERAND', 2972 const StaticTypeWarningCode('NON_BOOL_OPERAND',
4296 "The operands of the '{0}' operator must be assignable to 'bool'"); 2973 "The operands of the '{0}' operator must be assignable to 'bool'");
4297 2974
4298 /**
4299 *
4300 */
4301 static const StaticTypeWarningCode NON_NULLABLE_FIELD_NOT_INITIALIZED = 2975 static const StaticTypeWarningCode NON_NULLABLE_FIELD_NOT_INITIALIZED =
4302 const StaticTypeWarningCode('NON_NULLABLE_FIELD_NOT_INITIALIZED', 2976 const StaticTypeWarningCode('NON_NULLABLE_FIELD_NOT_INITIALIZED',
4303 "Variable '{0}' of non-nullable type '{1}' must be initialized"); 2977 "Variable '{0}' of non-nullable type '{1}' must be initialized");
4304 2978
4305 /** 2979 /**
4306 * 15.8 Parameterized Types: It is a static type warning if <i>A<sub>i</sub>, 2980 * 15.8 Parameterized Types: It is a static type warning if <i>A<sub>i</sub>,
4307 * 1 &lt;= i &lt;= n</i> does not denote a type in the enclosing lexical scope . 2981 * 1 &lt;= i &lt;= n</i> does not denote a type in the enclosing lexical scope .
4308 */ 2982 */
4309 static const StaticTypeWarningCode NON_TYPE_AS_TYPE_ARGUMENT = 2983 static const StaticTypeWarningCode NON_TYPE_AS_TYPE_ARGUMENT =
4310 const StaticTypeWarningCode('NON_TYPE_AS_TYPE_ARGUMENT', 2984 const StaticTypeWarningCode('NON_TYPE_AS_TYPE_ARGUMENT',
(...skipping 1829 matching lines...) Expand 10 before | Expand all | Expand 10 after
6140 * Initialize a newly created error code to have the given [name]. 4814 * Initialize a newly created error code to have the given [name].
6141 */ 4815 */
6142 const TodoCode(String name) : super(name, "{0}"); 4816 const TodoCode(String name) : super(name, "{0}");
6143 4817
6144 @override 4818 @override
6145 ErrorSeverity get errorSeverity => ErrorSeverity.INFO; 4819 ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
6146 4820
6147 @override 4821 @override
6148 ErrorType get type => ErrorType.TODO; 4822 ErrorType get type => ErrorType.TODO;
6149 } 4823 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/error.dart ('k') | pkg/analyzer/lib/src/error/pending_error.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698