| OLD | NEW |
| 1 # Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 # Copyright (c) 2017, 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 # Each entry in this map corresponds to a diagnostic message. Ideally, each | 5 # Each entry in this map corresponds to a diagnostic message. Ideally, each |
| 6 # entry contains three parts: | 6 # entry contains three parts: |
| 7 # | 7 # |
| 8 # 1. A message template (template). | 8 # 1. A message template (template). |
| 9 # | 9 # |
| 10 # 2. A suggestion for how to correct the problem (tip). | 10 # 2. A suggestion for how to correct the problem (tip). |
| 11 # | 11 # |
| 12 # 3. Examples that produce the message (one of expression, statement, | 12 # 3. Examples that produce the message (one of expression, statement, |
| 13 # declaration, member, script, or bytes). | 13 # declaration, member, script, or bytes). |
| 14 # | 14 # |
| 15 # In addition, an entry can contain an analyzer error code (analyzerCode) and a |
| 16 # dart2js error code (dart2jsCode). |
| 17 # |
| 15 # ## Parameter Substitution in Template and Tip | 18 # ## Parameter Substitution in Template and Tip |
| 16 # | 19 # |
| 17 # The fields `template` and `tip` are subject to parameter substitution. When | 20 # The fields `template` and `tip` are subject to parameter substitution. When |
| 18 # the compiler reports a problem, it may also specify a map with the following | 21 # the compiler reports a problem, it may also specify a map with the following |
| 19 # keys to be substituted into the message: | 22 # keys to be substituted into the message: |
| 20 # | 23 # |
| 21 # `#character` a Unicode character. | 24 # `#character` a Unicode character. |
| 22 # | 25 # |
| 23 # `#unicode` a Unicode short identifier (U+xxxx). We use this to represent code | 26 # `#unicode` a Unicode short identifier (U+xxxx). We use this to represent code |
| 24 # units or code points. | 27 # units or code points. |
| 25 # | 28 # |
| 26 # `#name` a name (a string). | 29 # `#name` a name (a string). |
| 27 # | 30 # |
| 28 # `#lexeme` a token. The token's `lexeme` property is used. | 31 # `#lexeme` a token. The token's `lexeme` property is used. |
| 29 # | 32 # |
| 30 # `#string` a string. | 33 # `#string` a string. |
| 31 | 34 |
| 32 AsciiControlCharacter: | 35 AsciiControlCharacter: |
| 33 template: "The control character #unicode can only be used in strings and comm
ents." | 36 template: "The control character #unicode can only be used in strings and comm
ents." |
| 37 dart2jsCode: BAD_INPUT_CHARACTER |
| 34 expresssion: "\x1b 1" | 38 expresssion: "\x1b 1" |
| 35 | 39 |
| 36 NonAsciiIdentifier: | 40 NonAsciiIdentifier: |
| 37 template: "The non-ASCII character '#character' (#unicode) can't be used in id
entifiers, only in strings and comments." | 41 template: "The non-ASCII character '#character' (#unicode) can't be used in id
entifiers, only in strings and comments." |
| 38 tip: "Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a do
llar sign)." | 42 tip: "Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a do
llar sign)." |
| 43 analyzerCode: ILLEGAL_CHARACTER |
| 44 dart2jsCode: BAD_INPUT_CHARACTER |
| 39 expresssion: "å" | 45 expresssion: "å" |
| 40 | 46 |
| 41 NonAsciiWhitespace: | 47 NonAsciiWhitespace: |
| 42 template: "The non-ASCII space character #unicode can only be used in strings
and comments." | 48 template: "The non-ASCII space character #unicode can only be used in strings
and comments." |
| 49 analyzerCode: ILLEGAL_CHARACTER |
| 50 dart2jsCode: BAD_INPUT_CHARACTER |
| 43 expresssion: "\u2028 1" | 51 expresssion: "\u2028 1" |
| 44 | 52 |
| 45 Encoding: | 53 Encoding: |
| 46 template: "Unable to decode bytes as UTF-8." | 54 template: "Unable to decode bytes as UTF-8." |
| 55 dart2jsCode: FASTA_FATAL |
| 47 bytes: [255] | 56 bytes: [255] |
| 48 | 57 |
| 49 EmptyNamedParameterList: | 58 EmptyNamedParameterList: |
| 50 template: "Named parameter lists cannot be empty." | 59 template: "Named parameter lists cannot be empty." |
| 51 tip: "Try adding a named parameter to the list." | 60 tip: "Try adding a named parameter to the list." |
| 61 dart2jsCode: EMPTY_NAMED_PARAMETER_LIST |
| 52 script: > | 62 script: > |
| 53 foo({}) {} | 63 foo({}) {} |
| 54 | 64 |
| 55 main() { | 65 main() { |
| 56 foo(); | 66 foo(); |
| 57 } | 67 } |
| 58 | 68 |
| 59 EmptyOptionalParameterList: | 69 EmptyOptionalParameterList: |
| 60 template: "Optional parameter lists cannot be empty." | 70 template: "Optional parameter lists cannot be empty." |
| 61 tip: "Try adding an optional parameter to the list." | 71 tip: "Try adding an optional parameter to the list." |
| 72 dart2jsCode: EMPTY_OPTIONAL_PARAMETER_LIST |
| 62 script: > | 73 script: > |
| 63 foo([]) {} | 74 foo([]) {} |
| 64 | 75 |
| 65 main() { | 76 main() { |
| 66 foo(); | 77 foo(); |
| 67 } | 78 } |
| 68 | 79 |
| 69 ExpectedBlockToSkip: ExpectedBody | 80 ExpectedBlockToSkip: |
| 81 template: "Expected a function body or '=>'." |
| 82 # TODO(ahe): In some scenarios, we can suggest removing the 'static' keyword. |
| 83 tip: "Try adding {}." |
| 84 dart2jsCode: NATIVE_OR_BODY_EXPECTED |
| 85 script: "main();" |
| 70 | 86 |
| 71 ExpectedBody: | 87 ExpectedBody: |
| 72 template: "Expected a function body or '=>'." | 88 template: "Expected a function body or '=>'." |
| 73 # TODO(ahe): In some scenarios, we can suggest removing the 'static' keyword. | 89 # TODO(ahe): In some scenarios, we can suggest removing the 'static' keyword. |
| 74 tip: "Try adding {}." | 90 tip: "Try adding {}." |
| 91 dart2jsCode: BODY_EXPECTED |
| 75 script: "main();" | 92 script: "main();" |
| 76 | 93 |
| 77 ExpectedButGot: | 94 ExpectedButGot: |
| 78 template: "Expected '#lexeme' before this." | 95 template: "Expected '#string' before this." |
| 79 # Consider the second example below: the parser expects a ')' before 'y', but | 96 # Consider the second example below: the parser expects a ')' before 'y', but |
| 80 # a ',' would also have worked. We don't have enough information to give a | 97 # a ',' would also have worked. We don't have enough information to give a |
| 81 # good suggestion. | 98 # good suggestion. |
| 82 tip: DONT_KNOW_HOW_TO_FIX, | 99 tip: DONT_KNOW_HOW_TO_FIX, |
| 100 dart2jsCode: MISSING_TOKEN_BEFORE_THIS |
| 83 script: | 101 script: |
| 84 - "main() => true ? 1;" | 102 - "main() => true ? 1;" |
| 85 - "main() => foo(x: 1 y: 2);" | 103 - "main() => foo(x: 1 y: 2);" |
| 86 | 104 |
| 87 ExpectedClassBody: | 105 ExpectedClassBody: |
| 88 template: "Expected a class body, but got '#lexeme'." | 106 template: "Expected a class body, but got '#lexeme'." |
| 107 dart2jsCode: FASTA_FATAL |
| 89 | 108 |
| 90 ExpectedClassBodyToSkip: ExpectedClassBody | 109 ExpectedClassBodyToSkip: ExpectedClassBody |
| 91 | 110 |
| 92 ExpectedDeclaration: | 111 ExpectedDeclaration: |
| 93 template: "Expected a declaration, but got '#lexeme'." | 112 template: "Expected a declaration, but got '#lexeme'." |
| 113 dart2jsCode: FASTA_FATAL |
| 94 | 114 |
| 95 ExpectedExpression: | 115 ExpectedExpression: |
| 96 template: "Expected an expression, but got '#lexeme'." | 116 template: "Expected an expression, but got '#lexeme'." |
| 117 dart2jsCode: FASTA_FATAL |
| 97 | 118 |
| 98 ExpectedFunctionBody: | 119 ExpectedFunctionBody: |
| 99 template: "Expected a function body, but got '#lexeme'." | 120 template: "Expected a function body, but got '#lexeme'." |
| 121 dart2jsCode: NATIVE_OR_FATAL |
| 100 | 122 |
| 101 ExpectedHexDigit: | 123 ExpectedHexDigit: |
| 102 template: "A hex digit (0-9 or A-F) must follow '0x'." | 124 template: "A hex digit (0-9 or A-F) must follow '0x'." |
| 103 # No tip, seems obvious from the error message. | 125 # No tip, seems obvious from the error message. |
| 126 analyzerCode: MISSING_HEX_DIGIT |
| 127 dart2jsCode: HEX_DIGIT_EXPECTED |
| 104 script: > | 128 script: > |
| 105 main() { | 129 main() { |
| 106 var i = 0x; | 130 var i = 0x; |
| 107 } | 131 } |
| 108 | 132 |
| 109 ExpectedIdentifier: | 133 ExpectedIdentifier: |
| 110 template: "'#lexeme' is a reserved word and can't be used here." | 134 template: "'#lexeme' is a reserved word and can't be used here." |
| 111 tip: "Try using a different name." | 135 tip: "Try using a different name." |
| 136 dart2jsCode: EXPECTED_IDENTIFIER |
| 112 script: "do() {} main() {}" | 137 script: "do() {} main() {}" |
| 113 | 138 |
| 114 ExpectedOpenParens: | 139 ExpectedOpenParens: |
| 115 template: "Expected '('." | 140 template: "Expected '('." |
| 141 dart2jsCode: GENERIC |
| 116 | 142 |
| 117 ExpectedString: | 143 ExpectedString: |
| 118 template: "Expected a String, but got '#lexeme'." | 144 template: "Expected a String, but got '#lexeme'." |
| 145 dart2jsCode: FASTA_FATAL |
| 119 | 146 |
| 120 ExpectedType: | 147 ExpectedType: |
| 121 template: "Expected a type, but got '#lexeme'." | 148 template: "Expected a type, but got '#lexeme'." |
| 149 dart2jsCode: FASTA_FATAL |
| 122 | 150 |
| 123 ExtraneousModifier: | 151 ExtraneousModifier: |
| 124 template: "Can't have modifier '#lexeme' here." | 152 template: "Can't have modifier '#lexeme' here." |
| 125 tip: "Try removing '#lexeme'." | 153 tip: "Try removing '#lexeme'." |
| 154 dart2jsCode: EXTRANEOUS_MODIFIER |
| 126 script: | 155 script: |
| 127 - "var String foo; main(){}" | 156 - "var String foo; main(){}" |
| 128 - "var set foo; main(){}" | 157 - "var set foo; main(){}" |
| 129 - "var final foo; main(){}" | 158 - "var final foo; main(){}" |
| 130 - "var var foo; main(){}" | 159 - "var var foo; main(){}" |
| 131 - "var const foo; main(){}" | 160 - "var const foo; main(){}" |
| 132 - "var abstract foo; main(){}" | 161 - "var abstract foo; main(){}" |
| 133 - "var static foo; main(){}" | 162 - "var static foo; main(){}" |
| 134 - "var external foo; main(){}" | 163 - "var external foo; main(){}" |
| 135 - "get var foo; main(){}" | 164 - "get var foo; main(){}" |
| 136 - "set var foo; main(){}" | 165 - "set var foo; main(){}" |
| 137 - "final var foo; main(){}" | 166 - "final var foo; main(){}" |
| 138 - "var var foo; main(){}" | 167 - "var var foo; main(){}" |
| 139 - "const var foo; main(){}" | 168 - "const var foo; main(){}" |
| 140 - "abstract var foo; main(){}" | 169 - "abstract var foo; main(){}" |
| 141 - "static var foo; main(){}" | 170 - "static var foo; main(){}" |
| 142 - "external var foo; main(){}" | 171 - "external var foo; main(){}" |
| 143 | 172 |
| 144 ExtraneousModifierReplace: | 173 ExtraneousModifierReplace: |
| 145 template: "Can't have modifier '#lexeme' here." | 174 template: "Can't have modifier '#lexeme' here." |
| 146 tip: "Try replacing modifier '#lexeme' with 'var', 'final', or a type." | 175 tip: "Try replacing modifier '#lexeme' with 'var', 'final', or a type." |
| 176 dart2jsCode: EXTRANEOUS_MODIFIER_REPLACE |
| 147 script: | 177 script: |
| 148 - "set foo; main(){}" | 178 - "set foo; main(){}" |
| 149 - "abstract foo; main(){}" | 179 - "abstract foo; main(){}" |
| 150 - "static foo; main(){}" | 180 - "static foo; main(){}" |
| 151 - "external foo; main(){}" | 181 - "external foo; main(){}" |
| 152 | 182 |
| 153 InvalidAwaitFor: | 183 InvalidAwaitFor: |
| 154 template: "'await' is only supported in methods with an 'async' or 'async*' bo
dy modifier." | 184 template: "'await' is only supported in methods with an 'async' or 'async*' bo
dy modifier." |
| 155 tip: "Try adding 'async' or 'async*' to the method body or removing the 'await
' keyword." | 185 tip: "Try adding 'async' or 'async*' to the method body or removing the 'await
' keyword." |
| 186 dart2jsCode: INVALID_AWAIT_FOR |
| 156 script: > | 187 script: > |
| 157 main(o) sync* { | 188 main(o) sync* { |
| 158 await for (var e in o) {} | 189 await for (var e in o) {} |
| 159 } | 190 } |
| 160 | 191 |
| 161 InvalidSyncModifier: | 192 InvalidSyncModifier: |
| 162 template: "Invalid modifier 'sync'." | 193 template: "Invalid modifier 'sync'." |
| 163 tip: "Try replacing 'sync' with 'sync*'." | 194 tip: "Try replacing 'sync' with 'sync*'." |
| 195 dart2jsCode: INVALID_SYNC_MODIFIER |
| 164 script: "main() sync {}" | 196 script: "main() sync {}" |
| 165 | 197 |
| 166 InvalidVoid: | 198 InvalidVoid: |
| 167 template: "Type 'void' can't be used here because it isn't a return type." | 199 template: "Type 'void' can't be used here because it isn't a return type." |
| 168 tip: "Try removing 'void' keyword or replace it with 'var', 'final', or a type
." | 200 tip: "Try removing 'void' keyword or replace it with 'var', 'final', or a type
." |
| 201 dart2jsCode: VOID_NOT_ALLOWED |
| 169 script: | 202 script: |
| 170 - "void x; main() {}" | 203 - "void x; main() {}" |
| 171 - "foo(void x) {} main() { foo(null); }" | 204 - "foo(void x) {} main() { foo(null); }" |
| 172 | 205 |
| 173 MissingExponent: | 206 MissingExponent: |
| 174 template: "Numbers in exponential notation should always contain an exponent (
an integer number with an optional sign)." | 207 template: "Numbers in exponential notation should always contain an exponent (
an integer number with an optional sign)." |
| 175 tip: "Make sure there is an exponent, and remove any whitespace before it." | 208 tip: "Make sure there is an exponent, and remove any whitespace before it." |
| 209 analyzerCode: MISSING_DIGIT |
| 210 dart2jsCode: EXPONENT_MISSING |
| 176 script: > | 211 script: > |
| 177 main() { | 212 main() { |
| 178 var i = 1e; | 213 var i = 1e; |
| 179 } | 214 } |
| 180 | 215 |
| 181 PositionalParameterWithEquals: | 216 PositionalParameterWithEquals: |
| 182 template: "Positional optional parameters can't use ':' to specify a default v
alue." | 217 template: "Positional optional parameters can't use ':' to specify a default v
alue." |
| 183 tip: "Try replacing ':' with '='." | 218 tip: "Try replacing ':' with '='." |
| 219 dart2jsCode: POSITIONAL_PARAMETER_WITH_EQUALS |
| 184 script: > | 220 script: > |
| 185 main() { | 221 main() { |
| 186 foo([a: 1]) => print(a); | 222 foo([a: 1]) => print(a); |
| 187 foo(2); | 223 foo(2); |
| 188 } | 224 } |
| 189 | 225 |
| 190 RequiredParameterWithDefault: | 226 RequiredParameterWithDefault: |
| 191 template: "Non-optional parameters can't have a default value." | 227 template: "Non-optional parameters can't have a default value." |
| 192 tip: "Try removing the default value or making the parameter optional." | 228 tip: "Try removing the default value or making the parameter optional." |
| 229 dart2jsCode: REQUIRED_PARAMETER_WITH_DEFAULT |
| 193 script: | 230 script: |
| 194 - > | 231 - > |
| 195 main() { | 232 main() { |
| 196 foo(a: 1) => print(a); | 233 foo(a: 1) => print(a); |
| 197 foo(2); | 234 foo(2); |
| 198 } | 235 } |
| 199 - > | 236 - > |
| 200 main() { | 237 main() { |
| 201 foo(a = 1) => print(a); | 238 foo(a = 1) => print(a); |
| 202 foo(2); | 239 foo(2); |
| 203 } | 240 } |
| 204 | 241 |
| 205 StackOverflow: | 242 StackOverflow: |
| 206 template: "Stack overflow." | 243 template: "Stack overflow." |
| 244 dart2jsCode: GENERIC |
| 207 | 245 |
| 208 UnexpectedDollarInString: | 246 UnexpectedDollarInString: |
| 209 template: "A '$' has special meaning inside a string, and must be followed by
an identifier or an expression in curly braces ({})." | 247 template: "A '$' has special meaning inside a string, and must be followed by
an identifier or an expression in curly braces ({})." |
| 210 tip: "Try adding a backslash (\\) to escape the '$'." | 248 tip: "Try adding a backslash (\\) to escape the '$'." |
| 249 dart2jsCode: MALFORMED_STRING_LITERAL |
| 211 script: | 250 script: |
| 212 - > | 251 - > |
| 213 main() { | 252 main() { |
| 214 return '$'; | 253 return '$'; |
| 215 } | 254 } |
| 216 - > | 255 - > |
| 217 main() { | 256 main() { |
| 218 return "$"; | 257 return "$"; |
| 219 } | 258 } |
| 220 - > | 259 - > |
| 221 main() { | 260 main() { |
| 222 return '''$'''; | 261 return '''$'''; |
| 223 } | 262 } |
| 224 - > | 263 - > |
| 225 main() { | 264 main() { |
| 226 return """$"""; | 265 return """$"""; |
| 227 } | 266 } |
| 228 | 267 |
| 229 UnexpectedToken: | 268 UnexpectedToken: |
| 230 template: "Unexpected token '#lexeme'." | 269 template: "Unexpected token '#lexeme'." |
| 270 dart2jsCode: FASTA_FATAL |
| 231 | 271 |
| 232 UnmatchedToken: | 272 UnmatchedToken: |
| 233 template: "Can't find '#string' to match '#lexeme'." | 273 template: "Can't find '#string' to match '#lexeme'." |
| 274 dart2jsCode: UNMATCHED_TOKEN |
| 234 script: | 275 script: |
| 235 - "main(" | 276 - "main(" |
| 236 - "main(){" | 277 - "main(){" |
| 237 - "main(){[}" | 278 - "main(){[}" |
| 238 | 279 |
| 239 UnsupportedPrefixPlus: | 280 UnsupportedPrefixPlus: |
| 240 template: "'+' is not a prefix operator. " | 281 template: "'+' is not a prefix operator. " |
| 241 tip: "Try removing '+'." | 282 tip: "Try removing '+'." |
| 283 dart2jsCode: UNSUPPORTED_PREFIX_PLUS |
| 242 script: "main() => +2; // No longer a valid way to write '2'" | 284 script: "main() => +2; // No longer a valid way to write '2'" |
| 243 | 285 |
| 244 UnterminatedComment: | 286 UnterminatedComment: |
| 245 template: "Comment starting with '/*' must end with '*/'." | 287 template: "Comment starting with '/*' must end with '*/'." |
| 288 analyzerCode: UNTERMINATED_MULTI_LINE_COMMENT |
| 289 dart2jsCode: UNTERMINATED_COMMENT |
| 246 script: | 290 script: |
| 247 main() { | 291 main() { |
| 248 } | 292 } |
| 249 /* | 293 /* |
| 250 | 294 |
| 251 UnterminatedString: | 295 UnterminatedString: |
| 252 template: "String must end with #string." | 296 template: "String must end with #string." |
| 297 analyzerCode: UNTERMINATED_STRING_LITERAL |
| 298 dart2jsCode: UNTERMINATED_STRING |
| 253 script: | 299 script: |
| 254 - > | 300 - > |
| 255 main() { | 301 main() { |
| 256 return ' | 302 return ' |
| 257 ; | 303 ; |
| 258 } | 304 } |
| 259 - > | 305 - > |
| 260 main() { | 306 main() { |
| 261 return \" | 307 return \" |
| 262 ; | 308 ; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 276 - > | 322 - > |
| 277 main() => \"\"\" | 323 main() => \"\"\" |
| 278 - > | 324 - > |
| 279 main() => r''' | 325 main() => r''' |
| 280 - > | 326 - > |
| 281 main() => r\"\"\" | 327 main() => r\"\"\" |
| 282 | 328 |
| 283 UnterminatedToken: | 329 UnterminatedToken: |
| 284 # This is a fall-back message that shouldn't happen. | 330 # This is a fall-back message that shouldn't happen. |
| 285 template: "Incomplete token." | 331 template: "Incomplete token." |
| 332 dart2jsCode: UNTERMINATED_TOKEN |
| 286 | 333 |
| 287 Unspecified: | 334 Unspecified: |
| 288 template: "#string" | 335 template: "#string" |
| 336 dart2jsCode: GENERIC |
| 289 | 337 |
| 290 AbstractNotSync: | 338 AbstractNotSync: |
| 291 template: "Abstract methods can't use 'async', 'async*', or 'sync*'." | 339 template: "Abstract methods can't use 'async', 'async*', or 'sync*'." |
| 340 dart2jsCode: FASTA_IGNORED |
| 292 | 341 |
| 293 AsyncAsIdentifier: | 342 AsyncAsIdentifier: |
| 343 analyzerCode: ASYNC_KEYWORD_USED_AS_IDENTIFIER |
| 294 template: "'async' can't be used as an identifier in 'async', 'async*', or 'sy
nc*' methods." | 344 template: "'async' can't be used as an identifier in 'async', 'async*', or 'sy
nc*' methods." |
| 345 dart2jsCode: GENERIC |
| 295 | 346 |
| 296 AwaitAsIdentifier: | 347 AwaitAsIdentifier: |
| 297 template: "'await' can't be used as an identifier in 'async', 'async*', or 'sy
nc*' methods." | 348 template: "'await' can't be used as an identifier in 'async', 'async*', or 'sy
nc*' methods." |
| 349 dart2jsCode: FASTA_IGNORED |
| 298 | 350 |
| 299 AwaitNotAsync: | 351 AwaitNotAsync: |
| 300 template: "'await' can only be used in 'async' or 'async*' methods." | 352 template: "'await' can only be used in 'async' or 'async*' methods." |
| 353 dart2jsCode: FASTA_IGNORED |
| 301 | 354 |
| 302 BuiltInIdentifierAsType: | 355 BuiltInIdentifierAsType: |
| 303 template: "Can't use '#lexeme' as a type." | 356 template: "Can't use '#lexeme' as a type." |
| 357 dart2jsCode: GENERIC |
| 304 | 358 |
| 305 BuiltInIdentifierInDeclaration: | 359 BuiltInIdentifierInDeclaration: |
| 306 template: "Can't use '#lexeme' as a name here." | 360 template: "Can't use '#lexeme' as a name here." |
| 361 dart2jsCode: GENERIC |
| 307 | 362 |
| 308 AwaitForNotAsync: | 363 AwaitForNotAsync: |
| 309 template: "Asynchronous for-loop can only be used in 'async' or 'async*' metho
ds." | 364 template: "Asynchronous for-loop can only be used in 'async' or 'async*' metho
ds." |
| 365 dart2jsCode: FASTA_IGNORED |
| 310 | 366 |
| 311 FactoryNotSync: | 367 FactoryNotSync: |
| 312 template: "Factories can't use 'async', 'async*', or 'sync*'." | 368 template: "Factories can't use 'async', 'async*', or 'sync*'." |
| 369 dart2jsCode: FASTA_IGNORED |
| 313 | 370 |
| 314 GeneratorReturnsValue: | 371 GeneratorReturnsValue: |
| 315 template: "'sync*' and 'async*' can't return a value." | 372 template: "'sync*' and 'async*' can't return a value." |
| 373 dart2jsCode: FASTA_IGNORED |
| 316 | 374 |
| 317 InvalidInlineFunctionType: | 375 InvalidInlineFunctionType: |
| 318 template: "Invalid inline function type." | 376 template: "Invalid inline function type." |
| 319 tip: "Try changing the inline function type (as in 'int f()') to a prefixed fu
nction type using the `Function` keyword (as in 'int Function() f')." | 377 tip: "Try changing the inline function type (as in 'int f()') to a prefixed fu
nction type using the `Function` keyword (as in 'int Function() f')." |
| 378 dart2jsCode: INVALID_INLINE_FUNCTION_TYPE |
| 320 declaration: "typedef F = Function(int f(String x)); main() { F f; }" | 379 declaration: "typedef F = Function(int f(String x)); main() { F f; }" |
| 321 | 380 |
| 322 SetterNotSync: | 381 SetterNotSync: |
| 323 template: "Setters can't use 'async', 'async*', or 'sync*'." | 382 template: "Setters can't use 'async', 'async*', or 'sync*'." |
| 383 dart2jsCode: FASTA_IGNORED |
| 324 | 384 |
| 325 YieldAsIdentifier: | 385 YieldAsIdentifier: |
| 326 template: "'yield' can't be used as an identifier in 'async', 'async*', or 'sy
nc*' methods." | 386 template: "'yield' can't be used as an identifier in 'async', 'async*', or 'sy
nc*' methods." |
| 387 dart2jsCode: FASTA_IGNORED |
| 327 | 388 |
| 328 YieldNotGenerator: | 389 YieldNotGenerator: |
| 329 template: "'yield' can only be used in 'sync*' or 'async*' methods." | 390 template: "'yield' can only be used in 'sync*' or 'async*' methods." |
| 391 dart2jsCode: FASTA_IGNORED |
| 330 | 392 |
| 331 OnlyTry: | 393 OnlyTry: |
| 332 template: "Try block should be followed by 'on', 'catch', or 'finally' block." | 394 template: "Try block should be followed by 'on', 'catch', or 'finally' block." |
| 333 tip: "Did you forget to add a 'finally' block?" | 395 tip: "Did you forget to add a 'finally' block?" |
| 334 statement: "try {}" | 396 statement: "try {}" |
| 397 dart2jsCode: FASTA_IGNORED |
| OLD | NEW |