| OLD | NEW |
| 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 engine.error; | 5 library engine.error; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'java_core.dart'; | 8 import 'java_core.dart'; |
| 9 import 'source.dart'; | 9 import 'source.dart'; |
| 10 import 'scanner.dart' show Token; | 10 import 'scanner.dart' show Token; |
| 11 import 'ast.dart' show AstNode; | 11 import 'ast.dart' show AstNode; |
| 12 import 'element.dart'; | 12 import 'element.dart'; |
| 13 | 13 |
| 14 /** | 14 /** |
| 15 * Instances of the class `AnalysisError` represent an error discovered during t
he analysis of | 15 * Instances of the class `AnalysisError` represent an error discovered during t
he analysis of |
| 16 * some Dart code. | 16 * some Dart code. |
| 17 * | 17 * |
| 18 * See [AnalysisErrorListener]. | 18 * See [AnalysisErrorListener]. |
| 19 */ | 19 */ |
| 20 class AnalysisError { | 20 class AnalysisError { |
| 21 /** | 21 /** |
| 22 * An empty array of errors used when no errors are expected. | 22 * An empty array of errors used when no errors are expected. |
| 23 */ | 23 */ |
| 24 static List<AnalysisError> NO_ERRORS = new List<AnalysisError>(0); | 24 static const List<AnalysisError> NO_ERRORS = const <AnalysisError>[]; |
| 25 | 25 |
| 26 /** | 26 /** |
| 27 * A [Comparator] that sorts by the name of the file that the [AnalysisError]
was | 27 * A [Comparator] that sorts by the name of the file that the [AnalysisError]
was |
| 28 * found. | 28 * found. |
| 29 */ | 29 */ |
| 30 static Comparator<AnalysisError> FILE_COMPARATOR = (AnalysisError o1, Analysis
Error o2) => o1.source.shortName.compareTo(o2.source.shortName); | 30 static Comparator<AnalysisError> FILE_COMPARATOR = (AnalysisError o1, Analysis
Error o2) => o1.source.shortName.compareTo(o2.source.shortName); |
| 31 | 31 |
| 32 /** | 32 /** |
| 33 * A [Comparator] that sorts error codes first by their severity (errors first
, warnings | 33 * A [Comparator] that sorts error codes first by their severity (errors first
, warnings |
| 34 * second), and then by the the error code type. | 34 * second), and then by the the error code type. |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 bool isStaticOnly = false; | 86 bool isStaticOnly = false; |
| 87 | 87 |
| 88 /** | 88 /** |
| 89 * Initialize a newly created analysis error for the specified source. The err
or has no location | 89 * Initialize a newly created analysis error for the specified source. The err
or has no location |
| 90 * information. | 90 * information. |
| 91 * | 91 * |
| 92 * @param source the source for which the exception occurred | 92 * @param source the source for which the exception occurred |
| 93 * @param errorCode the error code to be associated with this error | 93 * @param errorCode the error code to be associated with this error |
| 94 * @param arguments the arguments used to build the error message | 94 * @param arguments the arguments used to build the error message |
| 95 */ | 95 */ |
| 96 AnalysisError.con1(this.source, this.errorCode, List<Object> arguments) { | 96 AnalysisError.con1(this.source, this.errorCode, [List<Object> arguments]) { |
| 97 this._message = formatList(errorCode.message, arguments); | 97 this._message = formatList(errorCode.message, arguments); |
| 98 } | 98 } |
| 99 | 99 |
| 100 /** | 100 /** |
| 101 * Initialize a newly created analysis error for the specified source at the g
iven location. | 101 * Initialize a newly created analysis error for the specified source at the g
iven location. |
| 102 * | 102 * |
| 103 * @param source the source for which the exception occurred | 103 * @param source the source for which the exception occurred |
| 104 * @param offset the offset of the location of the error | 104 * @param offset the offset of the location of the error |
| 105 * @param length the length of the location of the error | 105 * @param length the length of the location of the error |
| 106 * @param errorCode the error code to be associated with this error | 106 * @param errorCode the error code to be associated with this error |
| 107 * @param arguments the arguments used to build the error message | 107 * @param arguments the arguments used to build the error message |
| 108 */ | 108 */ |
| 109 AnalysisError.con2(this.source, int offset, int length, this.errorCode, List<O
bject> arguments) { | 109 AnalysisError.con2(this.source, int offset, int length, this.errorCode, [List<
Object> arguments]) { |
| 110 this._offset = offset; | 110 this._offset = offset; |
| 111 this._length = length; | 111 this._length = length; |
| 112 this._message = formatList(errorCode.message, arguments); | 112 this._message = formatList(errorCode.message, arguments); |
| 113 String correctionTemplate = errorCode.correction; | 113 String correctionTemplate = errorCode.correction; |
| 114 if (correctionTemplate != null) { | 114 if (correctionTemplate != null) { |
| 115 this._correction = formatList(correctionTemplate, arguments); | 115 this._correction = formatList(correctionTemplate, arguments); |
| 116 } | 116 } |
| 117 } | 117 } |
| 118 | 118 |
| 119 @override | 119 @override |
| (...skipping 1917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2037 final String message; | 2037 final String message; |
| 2038 | 2038 |
| 2039 /** | 2039 /** |
| 2040 * The template used to create the correction to be displayed for this error, | 2040 * The template used to create the correction to be displayed for this error, |
| 2041 * or `null` if there is no correction information for this error. The | 2041 * or `null` if there is no correction information for this error. The |
| 2042 * correction should indicate how the user can fix the error. | 2042 * correction should indicate how the user can fix the error. |
| 2043 */ | 2043 */ |
| 2044 final String correction; | 2044 final String correction; |
| 2045 | 2045 |
| 2046 /** | 2046 /** |
| 2047 * An empty list of error codes. |
| 2048 */ |
| 2049 static const List<ErrorCode> EMPTY_LIST = const <ErrorCode>[]; |
| 2050 |
| 2051 /** |
| 2047 * Initialize a newly created error code to have the given [name]. The message | 2052 * Initialize a newly created error code to have the given [name]. The message |
| 2048 * associated with the error will be created from the given [message] | 2053 * associated with the error will be created from the given [message] |
| 2049 * template. The correction associated with the error will be created from the | 2054 * template. The correction associated with the error will be created from the |
| 2050 * given [correction] template. | 2055 * given [correction] template. |
| 2051 */ | 2056 */ |
| 2052 const ErrorCode(this.name, this.message, [this.correction]); | 2057 const ErrorCode(this.name, this.message, [this.correction]); |
| 2053 | 2058 |
| 2054 /** | 2059 /** |
| 2055 * The severity of the error. | 2060 * The severity of the error. |
| 2056 */ | 2061 */ |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2153 * Report an error with the given error code and arguments. | 2158 * Report an error with the given error code and arguments. |
| 2154 * | 2159 * |
| 2155 * If the arguments contain the names of two or more types, the method | 2160 * If the arguments contain the names of two or more types, the method |
| 2156 * [reportTypeErrorForNode] should be used and the types | 2161 * [reportTypeErrorForNode] should be used and the types |
| 2157 * themselves (rather than their names) should be passed as arguments. | 2162 * themselves (rather than their names) should be passed as arguments. |
| 2158 * | 2163 * |
| 2159 * @param errorCode the error code of the error to be reported | 2164 * @param errorCode the error code of the error to be reported |
| 2160 * @param node the node specifying the location of the error | 2165 * @param node the node specifying the location of the error |
| 2161 * @param arguments the arguments to the error, used to compose the error mess
age | 2166 * @param arguments the arguments to the error, used to compose the error mess
age |
| 2162 */ | 2167 */ |
| 2163 void reportErrorForNode(ErrorCode errorCode, AstNode node, List<Object> argume
nts) { | 2168 void reportErrorForNode(ErrorCode errorCode, AstNode node, [List<Object> argum
ents]) { |
| 2164 reportErrorForOffset(errorCode, node.offset, node.length, arguments); | 2169 reportErrorForOffset(errorCode, node.offset, node.length, arguments); |
| 2165 } | 2170 } |
| 2166 | 2171 |
| 2167 /** | 2172 /** |
| 2168 * Report an error with the given error code and arguments. | 2173 * Report an error with the given error code and arguments. |
| 2169 * | 2174 * |
| 2170 * @param errorCode the error code of the error to be reported | 2175 * @param errorCode the error code of the error to be reported |
| 2171 * @param offset the offset of the location of the error | 2176 * @param offset the offset of the location of the error |
| 2172 * @param length the length of the location of the error | 2177 * @param length the length of the location of the error |
| 2173 * @param arguments the arguments to the error, used to compose the error mess
age | 2178 * @param arguments the arguments to the error, used to compose the error mess
age |
| 2174 */ | 2179 */ |
| 2175 void reportErrorForOffset(ErrorCode errorCode, int offset, int length, List<Ob
ject> arguments) { | 2180 void reportErrorForOffset(ErrorCode errorCode, int offset, int length, [List<O
bject> arguments]) { |
| 2176 _errorListener.onError(new AnalysisError.con2(_source, offset, length, error
Code, arguments)); | 2181 _errorListener.onError(new AnalysisError.con2(_source, offset, length, error
Code, arguments)); |
| 2177 } | 2182 } |
| 2178 | 2183 |
| 2179 /** | 2184 /** |
| 2180 * Report an error with the given error code and arguments. | 2185 * Report an error with the given error code and arguments. |
| 2181 * | 2186 * |
| 2182 * @param errorCode the error code of the error to be reported | 2187 * @param errorCode the error code of the error to be reported |
| 2183 * @param token the token specifying the location of the error | 2188 * @param token the token specifying the location of the error |
| 2184 * @param arguments the arguments to the error, used to compose the error mess
age | 2189 * @param arguments the arguments to the error, used to compose the error mess
age |
| 2185 */ | 2190 */ |
| 2186 void reportErrorForToken(ErrorCode errorCode, Token token, List<Object> argume
nts) { | 2191 void reportErrorForToken(ErrorCode errorCode, Token token, [List<Object> argum
ents]) { |
| 2187 reportErrorForOffset(errorCode, token.offset, token.length, arguments); | 2192 reportErrorForOffset(errorCode, token.offset, token.length, arguments); |
| 2188 } | 2193 } |
| 2189 | 2194 |
| 2190 /** | 2195 /** |
| 2191 * Report an error with the given error code and arguments. The arguments are
expected to contain | 2196 * Report an error with the given error code and arguments. The arguments are
expected to contain |
| 2192 * two or more types. Convert the types into strings by using the display name
s of the types, | 2197 * two or more types. Convert the types into strings by using the display name
s of the types, |
| 2193 * unless there are two or more types with the same names, in which case the e
xtended display | 2198 * unless there are two or more types with the same names, in which case the e
xtended display |
| 2194 * names of the types will be used in order to clarify the message. | 2199 * names of the types will be used in order to clarify the message. |
| 2195 * | 2200 * |
| 2196 * If there are not two or more types in the argument list, the method | 2201 * If there are not two or more types in the argument list, the method |
| (...skipping 1854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4051 * Initialize a newly created error code to have the given [name]. | 4056 * Initialize a newly created error code to have the given [name]. |
| 4052 */ | 4057 */ |
| 4053 const TodoCode(String name) : super(name, "{0}"); | 4058 const TodoCode(String name) : super(name, "{0}"); |
| 4054 | 4059 |
| 4055 @override | 4060 @override |
| 4056 ErrorSeverity get errorSeverity => ErrorSeverity.INFO; | 4061 ErrorSeverity get errorSeverity => ErrorSeverity.INFO; |
| 4057 | 4062 |
| 4058 @override | 4063 @override |
| 4059 ErrorType get type => ErrorType.TODO; | 4064 ErrorType get type => ErrorType.TODO; |
| 4060 } | 4065 } |
| OLD | NEW |