| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 part of dart2js.semantics_visitor; | 5 part of dart2js.semantics_visitor; |
| 6 | 6 |
| 7 /// Mixin that implements all `errorX` methods of [SemanticSendVisitor] by | 7 /// Mixin that implements all `errorX` methods of [SemanticSendVisitor] by |
| 8 /// delegating to a bulk handler. | 8 /// delegating to a bulk handler. |
| 9 /// | 9 /// |
| 10 /// Use this mixin to provide a trivial implementation for all `errorX` methods. | 10 /// Use this mixin to provide a trivial implementation for all `errorX` methods. |
| 11 abstract class ErrorBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 11 abstract class ErrorBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 12 R bulkHandleNode(Node node, String message); | 12 R bulkHandleNode(Node node, String message, A arg); |
| 13 | 13 |
| 14 R bulkHandleError(Send node) { | 14 R bulkHandleError(Send node, A arg) { |
| 15 return bulkHandleNode(node, "Error expression `$node` unhandled."); | 15 return bulkHandleNode(node, "Error expression `$node` unhandled.", arg); |
| 16 } | 16 } |
| 17 | 17 |
| 18 @override | 18 @override |
| 19 R errorInvalidAssert( | 19 R errorInvalidAssert( |
| 20 Send node, | 20 Send node, |
| 21 NodeList arguments, | 21 NodeList arguments, |
| 22 A arg) { | 22 A arg) { |
| 23 return bulkHandleError(node); | 23 return bulkHandleError(node, arg); |
| 24 } | 24 } |
| 25 | 25 |
| 26 @override | 26 @override |
| 27 R errorClassTypeLiteralCompound( | 27 R errorClassTypeLiteralCompound( |
| 28 Send node, | 28 Send node, |
| 29 TypeConstantExpression constant, | 29 TypeConstantExpression constant, |
| 30 AssignmentOperator operator, | 30 AssignmentOperator operator, |
| 31 Node rhs, | 31 Node rhs, |
| 32 A arg) { | 32 A arg) { |
| 33 return bulkHandleError(node); | 33 return bulkHandleError(node, arg); |
| 34 } | 34 } |
| 35 | 35 |
| 36 @override | 36 @override |
| 37 R errorClassTypeLiteralPostfix( | 37 R errorClassTypeLiteralPostfix( |
| 38 Send node, | 38 Send node, |
| 39 TypeConstantExpression constant, | 39 TypeConstantExpression constant, |
| 40 IncDecOperator operator, | 40 IncDecOperator operator, |
| 41 A arg) { | 41 A arg) { |
| 42 return bulkHandleError(node); | 42 return bulkHandleError(node, arg); |
| 43 } | 43 } |
| 44 | 44 |
| 45 @override | 45 @override |
| 46 R errorClassTypeLiteralPrefix( | 46 R errorClassTypeLiteralPrefix( |
| 47 Send node, | 47 Send node, |
| 48 TypeConstantExpression constant, | 48 TypeConstantExpression constant, |
| 49 IncDecOperator operator, | 49 IncDecOperator operator, |
| 50 A arg) { | 50 A arg) { |
| 51 return bulkHandleError(node); | 51 return bulkHandleError(node, arg); |
| 52 } | 52 } |
| 53 | 53 |
| 54 @override | 54 @override |
| 55 R errorClassTypeLiteralSet( | 55 R errorClassTypeLiteralSet( |
| 56 SendSet node, | 56 SendSet node, |
| 57 TypeConstantExpression constant, | 57 TypeConstantExpression constant, |
| 58 Node rhs, | 58 Node rhs, |
| 59 A arg) { | 59 A arg) { |
| 60 return bulkHandleError(node); | 60 return bulkHandleError(node, arg); |
| 61 } | 61 } |
| 62 | 62 |
| 63 @override | 63 @override |
| 64 R errorDynamicTypeLiteralCompound( | 64 R errorDynamicTypeLiteralCompound( |
| 65 Send node, | 65 Send node, |
| 66 TypeConstantExpression constant, | 66 TypeConstantExpression constant, |
| 67 AssignmentOperator operator, | 67 AssignmentOperator operator, |
| 68 Node rhs, | 68 Node rhs, |
| 69 A arg) { | 69 A arg) { |
| 70 return bulkHandleError(node); | 70 return bulkHandleError(node, arg); |
| 71 } | 71 } |
| 72 | 72 |
| 73 @override | 73 @override |
| 74 R errorDynamicTypeLiteralPostfix( | 74 R errorDynamicTypeLiteralPostfix( |
| 75 Send node, | 75 Send node, |
| 76 TypeConstantExpression constant, | 76 TypeConstantExpression constant, |
| 77 IncDecOperator operator, | 77 IncDecOperator operator, |
| 78 A arg) { | 78 A arg) { |
| 79 return bulkHandleError(node); | 79 return bulkHandleError(node, arg); |
| 80 } | 80 } |
| 81 | 81 |
| 82 @override | 82 @override |
| 83 R errorDynamicTypeLiteralPrefix( | 83 R errorDynamicTypeLiteralPrefix( |
| 84 Send node, | 84 Send node, |
| 85 TypeConstantExpression constant, | 85 TypeConstantExpression constant, |
| 86 IncDecOperator operator, | 86 IncDecOperator operator, |
| 87 A arg) { | 87 A arg) { |
| 88 return bulkHandleError(node); | 88 return bulkHandleError(node, arg); |
| 89 } | 89 } |
| 90 | 90 |
| 91 @override | 91 @override |
| 92 R errorDynamicTypeLiteralSet( | 92 R errorDynamicTypeLiteralSet( |
| 93 SendSet node, | 93 SendSet node, |
| 94 TypeConstantExpression constant, | 94 TypeConstantExpression constant, |
| 95 Node rhs, | 95 Node rhs, |
| 96 A arg) { | 96 A arg) { |
| 97 return bulkHandleError(node); | 97 return bulkHandleError(node, arg); |
| 98 } | 98 } |
| 99 | 99 |
| 100 @override | 100 @override |
| 101 R errorFinalLocalVariableCompound( | 101 R errorFinalLocalVariableCompound( |
| 102 Send node, | 102 Send node, |
| 103 LocalVariableElement | 103 LocalVariableElement |
| 104 variable, | 104 variable, |
| 105 AssignmentOperator operator, | 105 AssignmentOperator operator, |
| 106 Node rhs, | 106 Node rhs, |
| 107 A arg) { | 107 A arg) { |
| 108 return bulkHandleError(node); | 108 return bulkHandleError(node, arg); |
| 109 } | 109 } |
| 110 | 110 |
| 111 @override | 111 @override |
| 112 R errorFinalLocalVariableSet( | 112 R errorFinalLocalVariableSet( |
| 113 SendSet node, | 113 SendSet node, |
| 114 LocalVariableElement variable, | 114 LocalVariableElement variable, |
| 115 Node rhs, | 115 Node rhs, |
| 116 A arg) { | 116 A arg) { |
| 117 return bulkHandleError(node); | 117 return bulkHandleError(node, arg); |
| 118 } | 118 } |
| 119 | 119 |
| 120 @override | 120 @override |
| 121 R errorFinalParameterCompound( | 121 R errorFinalParameterCompound( |
| 122 Send node, | 122 Send node, |
| 123 ParameterElement parameter, | 123 ParameterElement parameter, |
| 124 AssignmentOperator operator, | 124 AssignmentOperator operator, |
| 125 Node rhs, | 125 Node rhs, |
| 126 A arg) { | 126 A arg) { |
| 127 return bulkHandleError(node); | 127 return bulkHandleError(node, arg); |
| 128 } | 128 } |
| 129 | 129 |
| 130 @override | 130 @override |
| 131 R errorFinalParameterSet( | 131 R errorFinalParameterSet( |
| 132 SendSet node, | 132 SendSet node, |
| 133 ParameterElement parameter, | 133 ParameterElement parameter, |
| 134 Node rhs, | 134 Node rhs, |
| 135 A arg) { | 135 A arg) { |
| 136 return bulkHandleError(node); | 136 return bulkHandleError(node, arg); |
| 137 } | 137 } |
| 138 | 138 |
| 139 @override | 139 @override |
| 140 R errorFinalStaticFieldCompound( | 140 R errorFinalStaticFieldCompound( |
| 141 Send node, | 141 Send node, |
| 142 FieldElement field, | 142 FieldElement field, |
| 143 AssignmentOperator operator, | 143 AssignmentOperator operator, |
| 144 Node rhs, | 144 Node rhs, |
| 145 A arg) { | 145 A arg) { |
| 146 return bulkHandleError(node); | 146 return bulkHandleError(node, arg); |
| 147 } | 147 } |
| 148 | 148 |
| 149 @override | 149 @override |
| 150 R errorFinalStaticFieldSet( | 150 R errorFinalStaticFieldSet( |
| 151 SendSet node, | 151 SendSet node, |
| 152 FieldElement field, | 152 FieldElement field, |
| 153 Node rhs, | 153 Node rhs, |
| 154 A arg) { | 154 A arg) { |
| 155 return bulkHandleError(node); | 155 return bulkHandleError(node, arg); |
| 156 } | 156 } |
| 157 | 157 |
| 158 @override | 158 @override |
| 159 R errorFinalSuperFieldCompound( | 159 R errorFinalSuperFieldCompound( |
| 160 Send node, | 160 Send node, |
| 161 FieldElement field, | 161 FieldElement field, |
| 162 AssignmentOperator operator, | 162 AssignmentOperator operator, |
| 163 Node rhs, | 163 Node rhs, |
| 164 A arg) { | 164 A arg) { |
| 165 return bulkHandleError(node); | 165 return bulkHandleError(node, arg); |
| 166 } | 166 } |
| 167 | 167 |
| 168 @override | 168 @override |
| 169 R errorFinalSuperFieldSet( | 169 R errorFinalSuperFieldSet( |
| 170 SendSet node, | 170 SendSet node, |
| 171 FieldElement field, | 171 FieldElement field, |
| 172 Node rhs, | 172 Node rhs, |
| 173 A arg) { | 173 A arg) { |
| 174 return bulkHandleError(node); | 174 return bulkHandleError(node, arg); |
| 175 } | 175 } |
| 176 | 176 |
| 177 @override | 177 @override |
| 178 R errorFinalTopLevelFieldCompound( | 178 R errorFinalTopLevelFieldCompound( |
| 179 Send node, | 179 Send node, |
| 180 FieldElement field, | 180 FieldElement field, |
| 181 AssignmentOperator operator, | 181 AssignmentOperator operator, |
| 182 Node rhs, | 182 Node rhs, |
| 183 A arg) { | 183 A arg) { |
| 184 return bulkHandleError(node); | 184 return bulkHandleError(node, arg); |
| 185 } | 185 } |
| 186 | 186 |
| 187 @override | 187 @override |
| 188 R errorFinalTopLevelFieldSet( | 188 R errorFinalTopLevelFieldSet( |
| 189 SendSet node, | 189 SendSet node, |
| 190 FieldElement field, | 190 FieldElement field, |
| 191 Node rhs, | 191 Node rhs, |
| 192 A arg) { | 192 A arg) { |
| 193 return bulkHandleError(node); | 193 return bulkHandleError(node, arg); |
| 194 } | 194 } |
| 195 | 195 |
| 196 @override | 196 @override |
| 197 R errorLocalFunctionCompound( | 197 R errorLocalFunctionCompound( |
| 198 Send node, | 198 Send node, |
| 199 LocalFunctionElement function, | 199 LocalFunctionElement function, |
| 200 AssignmentOperator operator, | 200 AssignmentOperator operator, |
| 201 Node rhs, | 201 Node rhs, |
| 202 A arg) { | 202 A arg) { |
| 203 return bulkHandleError(node); | 203 return bulkHandleError(node, arg); |
| 204 } | 204 } |
| 205 | 205 |
| 206 @override | 206 @override |
| 207 R errorLocalFunctionPostfix( | 207 R errorLocalFunctionPostfix( |
| 208 Send node, | 208 Send node, |
| 209 LocalFunctionElement function, | 209 LocalFunctionElement function, |
| 210 IncDecOperator operator, | 210 IncDecOperator operator, |
| 211 A arg) { | 211 A arg) { |
| 212 return bulkHandleError(node); | 212 return bulkHandleError(node, arg); |
| 213 } | 213 } |
| 214 | 214 |
| 215 @override | 215 @override |
| 216 R errorLocalFunctionPrefix( | 216 R errorLocalFunctionPrefix( |
| 217 Send node, | 217 Send node, |
| 218 LocalFunctionElement function, | 218 LocalFunctionElement function, |
| 219 IncDecOperator operator, | 219 IncDecOperator operator, |
| 220 A arg) { | 220 A arg) { |
| 221 return bulkHandleError(node); | 221 return bulkHandleError(node, arg); |
| 222 } | 222 } |
| 223 | 223 |
| 224 @override | 224 @override |
| 225 R errorLocalFunctionSet( | 225 R errorLocalFunctionSet( |
| 226 SendSet node, | 226 SendSet node, |
| 227 LocalFunctionElement function, | 227 LocalFunctionElement function, |
| 228 Node rhs, | 228 Node rhs, |
| 229 A arg) { | 229 A arg) { |
| 230 return bulkHandleError(node); | 230 return bulkHandleError(node, arg); |
| 231 } | 231 } |
| 232 | 232 |
| 233 @override | 233 @override |
| 234 R errorStaticFunctionSet( | 234 R errorStaticFunctionSet( |
| 235 Send node, | 235 Send node, |
| 236 MethodElement function, | 236 MethodElement function, |
| 237 Node rhs, | 237 Node rhs, |
| 238 A arg) { | 238 A arg) { |
| 239 return bulkHandleError(node); | 239 return bulkHandleError(node, arg); |
| 240 } | 240 } |
| 241 | 241 |
| 242 @override | 242 @override |
| 243 R errorStaticGetterSet( | 243 R errorStaticGetterSet( |
| 244 SendSet node, | 244 SendSet node, |
| 245 FunctionElement getter, | 245 FunctionElement getter, |
| 246 Node rhs, | 246 Node rhs, |
| 247 A arg) { | 247 A arg) { |
| 248 return bulkHandleError(node); | 248 return bulkHandleError(node, arg); |
| 249 } | 249 } |
| 250 | 250 |
| 251 @override | 251 @override |
| 252 R errorStaticSetterGet( | 252 R errorStaticSetterGet( |
| 253 Send node, | 253 Send node, |
| 254 FunctionElement setter, | 254 FunctionElement setter, |
| 255 A arg) { | 255 A arg) { |
| 256 return bulkHandleError(node); | 256 return bulkHandleError(node, arg); |
| 257 } | 257 } |
| 258 | 258 |
| 259 @override | 259 @override |
| 260 R errorStaticSetterInvoke( | 260 R errorStaticSetterInvoke( |
| 261 Send node, | 261 Send node, |
| 262 FunctionElement setter, | 262 FunctionElement setter, |
| 263 NodeList arguments, | 263 NodeList arguments, |
| 264 Selector selector, | 264 Selector selector, |
| 265 A arg) { | 265 A arg) { |
| 266 return bulkHandleError(node); | 266 return bulkHandleError(node, arg); |
| 267 } | 267 } |
| 268 | 268 |
| 269 @override | 269 @override |
| 270 R errorSuperGetterSet( | 270 R errorSuperGetterSet( |
| 271 SendSet node, | 271 SendSet node, |
| 272 FunctionElement getter, | 272 FunctionElement getter, |
| 273 Node rhs, | 273 Node rhs, |
| 274 A arg) { | 274 A arg) { |
| 275 return bulkHandleError(node); | 275 return bulkHandleError(node, arg); |
| 276 } | 276 } |
| 277 | 277 |
| 278 @override | 278 @override |
| 279 R errorSuperMethodSet( | 279 R errorSuperMethodSet( |
| 280 Send node, | 280 Send node, |
| 281 MethodElement method, | 281 MethodElement method, |
| 282 Node rhs, | 282 Node rhs, |
| 283 A arg) { | 283 A arg) { |
| 284 return bulkHandleError(node); | 284 return bulkHandleError(node, arg); |
| 285 } | 285 } |
| 286 | 286 |
| 287 @override | 287 @override |
| 288 R errorSuperSetterGet( | 288 R errorSuperSetterGet( |
| 289 Send node, | 289 Send node, |
| 290 FunctionElement setter, | 290 FunctionElement setter, |
| 291 A arg) { | 291 A arg) { |
| 292 return bulkHandleError(node); | 292 return bulkHandleError(node, arg); |
| 293 } | 293 } |
| 294 | 294 |
| 295 @override | 295 @override |
| 296 R errorSuperSetterInvoke( | 296 R errorSuperSetterInvoke( |
| 297 Send node, | 297 Send node, |
| 298 FunctionElement setter, | 298 FunctionElement setter, |
| 299 NodeList arguments, | 299 NodeList arguments, |
| 300 Selector selector, | 300 Selector selector, |
| 301 A arg) { | 301 A arg) { |
| 302 return bulkHandleError(node); | 302 return bulkHandleError(node, arg); |
| 303 } | 303 } |
| 304 | 304 |
| 305 @override | 305 @override |
| 306 R errorTopLevelFunctionSet( | 306 R errorTopLevelFunctionSet( |
| 307 Send node, | 307 Send node, |
| 308 MethodElement function, | 308 MethodElement function, |
| 309 Node rhs, | 309 Node rhs, |
| 310 A arg) { | 310 A arg) { |
| 311 return bulkHandleError(node); | 311 return bulkHandleError(node, arg); |
| 312 } | 312 } |
| 313 | 313 |
| 314 @override | 314 @override |
| 315 R errorTopLevelGetterSet( | 315 R errorTopLevelGetterSet( |
| 316 SendSet node, | 316 SendSet node, |
| 317 FunctionElement getter, | 317 FunctionElement getter, |
| 318 Node rhs, | 318 Node rhs, |
| 319 A arg) { | 319 A arg) { |
| 320 return bulkHandleError(node); | 320 return bulkHandleError(node, arg); |
| 321 } | 321 } |
| 322 | 322 |
| 323 @override | 323 @override |
| 324 R errorTopLevelSetterGet( | 324 R errorTopLevelSetterGet( |
| 325 Send node, | 325 Send node, |
| 326 FunctionElement setter, | 326 FunctionElement setter, |
| 327 A arg) { | 327 A arg) { |
| 328 return bulkHandleError(node); | 328 return bulkHandleError(node, arg); |
| 329 } | 329 } |
| 330 | 330 |
| 331 @override | 331 @override |
| 332 R errorTopLevelSetterInvoke( | 332 R errorTopLevelSetterInvoke( |
| 333 Send node, | 333 Send node, |
| 334 FunctionElement setter, | 334 FunctionElement setter, |
| 335 NodeList arguments, | 335 NodeList arguments, |
| 336 Selector selector, | 336 Selector selector, |
| 337 A arg) { | 337 A arg) { |
| 338 return bulkHandleError(node); | 338 return bulkHandleError(node, arg); |
| 339 } | 339 } |
| 340 | 340 |
| 341 @override | 341 @override |
| 342 R errorTypeVariableTypeLiteralCompound( | 342 R errorTypeVariableTypeLiteralCompound( |
| 343 Send node, | 343 Send node, |
| 344 TypeVariableElement element, | 344 TypeVariableElement element, |
| 345 AssignmentOperator operator, | 345 AssignmentOperator operator, |
| 346 Node rhs, | 346 Node rhs, |
| 347 A arg) { | 347 A arg) { |
| 348 return bulkHandleError(node); | 348 return bulkHandleError(node, arg); |
| 349 } | 349 } |
| 350 | 350 |
| 351 @override | 351 @override |
| 352 R errorTypeVariableTypeLiteralPostfix( | 352 R errorTypeVariableTypeLiteralPostfix( |
| 353 Send node, | 353 Send node, |
| 354 TypeVariableElement element, | 354 TypeVariableElement element, |
| 355 IncDecOperator operator, | 355 IncDecOperator operator, |
| 356 A arg) { | 356 A arg) { |
| 357 return bulkHandleError(node); | 357 return bulkHandleError(node, arg); |
| 358 } | 358 } |
| 359 | 359 |
| 360 @override | 360 @override |
| 361 R errorTypeVariableTypeLiteralPrefix( | 361 R errorTypeVariableTypeLiteralPrefix( |
| 362 Send node, | 362 Send node, |
| 363 TypeVariableElement element, | 363 TypeVariableElement element, |
| 364 IncDecOperator operator, | 364 IncDecOperator operator, |
| 365 A arg) { | 365 A arg) { |
| 366 return bulkHandleError(node); | 366 return bulkHandleError(node, arg); |
| 367 } | 367 } |
| 368 | 368 |
| 369 @override | 369 @override |
| 370 R errorTypeVariableTypeLiteralSet( | 370 R errorTypeVariableTypeLiteralSet( |
| 371 SendSet node, | 371 SendSet node, |
| 372 TypeVariableElement element, | 372 TypeVariableElement element, |
| 373 Node rhs, | 373 Node rhs, |
| 374 A arg) { | 374 A arg) { |
| 375 return bulkHandleError(node); | 375 return bulkHandleError(node, arg); |
| 376 } | 376 } |
| 377 | 377 |
| 378 @override | 378 @override |
| 379 R errorTypedefTypeLiteralCompound( | 379 R errorTypedefTypeLiteralCompound( |
| 380 Send node, | 380 Send node, |
| 381 TypeConstantExpression constant, | 381 TypeConstantExpression constant, |
| 382 AssignmentOperator operator, | 382 AssignmentOperator operator, |
| 383 Node rhs, | 383 Node rhs, |
| 384 A arg) { | 384 A arg) { |
| 385 return bulkHandleError(node); | 385 return bulkHandleError(node, arg); |
| 386 } | 386 } |
| 387 | 387 |
| 388 @override | 388 @override |
| 389 R errorTypedefTypeLiteralPostfix( | 389 R errorTypedefTypeLiteralPostfix( |
| 390 Send node, | 390 Send node, |
| 391 TypeConstantExpression constant, | 391 TypeConstantExpression constant, |
| 392 IncDecOperator operator, | 392 IncDecOperator operator, |
| 393 A arg) { | 393 A arg) { |
| 394 return bulkHandleError(node); | 394 return bulkHandleError(node, arg); |
| 395 } | 395 } |
| 396 | 396 |
| 397 @override | 397 @override |
| 398 R errorTypedefTypeLiteralPrefix( | 398 R errorTypedefTypeLiteralPrefix( |
| 399 Send node, | 399 Send node, |
| 400 TypeConstantExpression constant, | 400 TypeConstantExpression constant, |
| 401 IncDecOperator operator, | 401 IncDecOperator operator, |
| 402 A arg) { | 402 A arg) { |
| 403 return bulkHandleError(node); | 403 return bulkHandleError(node, arg); |
| 404 } | 404 } |
| 405 | 405 |
| 406 @override | 406 @override |
| 407 R errorTypedefTypeLiteralSet( | 407 R errorTypedefTypeLiteralSet( |
| 408 SendSet node, | 408 SendSet node, |
| 409 TypeConstantExpression constant, | 409 TypeConstantExpression constant, |
| 410 Node rhs, | 410 Node rhs, |
| 411 A arg) { | 411 A arg) { |
| 412 return bulkHandleError(node); | 412 return bulkHandleError(node, arg); |
| 413 } | 413 } |
| 414 | 414 |
| 415 @override | 415 @override |
| 416 R errorUnresolvedCompound( | 416 R errorUnresolvedCompound( |
| 417 Send node, | 417 Send node, |
| 418 Element element, | 418 Element element, |
| 419 AssignmentOperator operator, | 419 AssignmentOperator operator, |
| 420 Node rhs, | 420 Node rhs, |
| 421 A arg) { | 421 A arg) { |
| 422 return bulkHandleError(node); | 422 return bulkHandleError(node, arg); |
| 423 } | 423 } |
| 424 | 424 |
| 425 @override | 425 @override |
| 426 R errorUnresolvedGet( | 426 R errorUnresolvedGet( |
| 427 Send node, | 427 Send node, |
| 428 Element element, | 428 Element element, |
| 429 A arg) { | 429 A arg) { |
| 430 return bulkHandleError(node); | 430 return bulkHandleError(node, arg); |
| 431 } | 431 } |
| 432 | 432 |
| 433 @override | 433 @override |
| 434 R errorUnresolvedInvoke( | 434 R errorUnresolvedInvoke( |
| 435 Send node, | 435 Send node, |
| 436 Element element, | 436 Element element, |
| 437 NodeList arguments, | 437 NodeList arguments, |
| 438 Selector selector, | 438 Selector selector, |
| 439 A arg) { | 439 A arg) { |
| 440 return bulkHandleError(node); | 440 return bulkHandleError(node, arg); |
| 441 } | 441 } |
| 442 | 442 |
| 443 @override | 443 @override |
| 444 R errorUnresolvedPostfix( | 444 R errorUnresolvedPostfix( |
| 445 Send node, | 445 Send node, |
| 446 Element element, | 446 Element element, |
| 447 IncDecOperator operator, | 447 IncDecOperator operator, |
| 448 A arg) { | 448 A arg) { |
| 449 return bulkHandleError(node); | 449 return bulkHandleError(node, arg); |
| 450 } | 450 } |
| 451 | 451 |
| 452 @override | 452 @override |
| 453 R errorUnresolvedPrefix( | 453 R errorUnresolvedPrefix( |
| 454 Send node, | 454 Send node, |
| 455 Element element, | 455 Element element, |
| 456 IncDecOperator operator, | 456 IncDecOperator operator, |
| 457 A arg) { | 457 A arg) { |
| 458 return bulkHandleError(node); | 458 return bulkHandleError(node, arg); |
| 459 } | 459 } |
| 460 | 460 |
| 461 @override | 461 @override |
| 462 R errorUnresolvedSet( | 462 R errorUnresolvedSet( |
| 463 Send node, | 463 Send node, |
| 464 Element element, | 464 Element element, |
| 465 Node rhs, | 465 Node rhs, |
| 466 A arg) { | 466 A arg) { |
| 467 return bulkHandleError(node); | 467 return bulkHandleError(node, arg); |
| 468 } | 468 } |
| 469 | 469 |
| 470 @override | 470 @override |
| 471 R errorUnresolvedSuperCompoundIndexSet( | 471 R errorUnresolvedSuperCompoundIndexSet( |
| 472 SendSet node, | 472 SendSet node, |
| 473 Element element, | 473 Element element, |
| 474 Node index, | 474 Node index, |
| 475 AssignmentOperator operator, | 475 AssignmentOperator operator, |
| 476 Node rhs, | 476 Node rhs, |
| 477 A arg) { | 477 A arg) { |
| 478 return bulkHandleError(node); | 478 return bulkHandleError(node, arg); |
| 479 } | 479 } |
| 480 | 480 |
| 481 @override | 481 @override |
| 482 R errorUnresolvedSuperIndex( | 482 R errorUnresolvedSuperIndex( |
| 483 Send node, | 483 Send node, |
| 484 Element function, | 484 Element function, |
| 485 Node index, | 485 Node index, |
| 486 A arg) { | 486 A arg) { |
| 487 return bulkHandleError(node); | 487 return bulkHandleError(node, arg); |
| 488 } | 488 } |
| 489 | 489 |
| 490 @override | 490 @override |
| 491 R errorUnresolvedSuperIndexPostfix( | 491 R errorUnresolvedSuperIndexPostfix( |
| 492 Send node, | 492 Send node, |
| 493 Element function, | 493 Element function, |
| 494 Node index, | 494 Node index, |
| 495 IncDecOperator operator, | 495 IncDecOperator operator, |
| 496 A arg) { | 496 A arg) { |
| 497 return bulkHandleError(node); | 497 return bulkHandleError(node, arg); |
| 498 } | 498 } |
| 499 | 499 |
| 500 @override | 500 @override |
| 501 R errorUnresolvedSuperIndexPrefix( | 501 R errorUnresolvedSuperIndexPrefix( |
| 502 Send node, | 502 Send node, |
| 503 Element function, | 503 Element function, |
| 504 Node index, | 504 Node index, |
| 505 IncDecOperator operator, | 505 IncDecOperator operator, |
| 506 A arg) { | 506 A arg) { |
| 507 return bulkHandleError(node); | 507 return bulkHandleError(node, arg); |
| 508 } | 508 } |
| 509 | 509 |
| 510 @override | 510 @override |
| 511 R errorUnresolvedSuperIndexSet( | 511 R errorUnresolvedSuperIndexSet( |
| 512 SendSet node, | 512 SendSet node, |
| 513 Element element, | 513 Element element, |
| 514 Node index, | 514 Node index, |
| 515 Node rhs, | 515 Node rhs, |
| 516 A arg) { | 516 A arg) { |
| 517 return bulkHandleError(node); | 517 return bulkHandleError(node, arg); |
| 518 } | 518 } |
| 519 | 519 |
| 520 @override | 520 @override |
| 521 R errorUnresolvedSuperBinary( | 521 R errorUnresolvedSuperBinary( |
| 522 Send node, | 522 Send node, |
| 523 Element element, | 523 Element element, |
| 524 BinaryOperator operator, | 524 BinaryOperator operator, |
| 525 Node argument, | 525 Node argument, |
| 526 A arg) { | 526 A arg) { |
| 527 return bulkHandleError(node); | 527 return bulkHandleError(node, arg); |
| 528 } | 528 } |
| 529 | 529 |
| 530 @override | 530 @override |
| 531 R errorUnresolvedSuperUnary( | 531 R errorUnresolvedSuperUnary( |
| 532 Send node, | 532 Send node, |
| 533 UnaryOperator operator, | 533 UnaryOperator operator, |
| 534 Element element, | 534 Element element, |
| 535 A arg) { | 535 A arg) { |
| 536 return bulkHandleError(node); | 536 return bulkHandleError(node, arg); |
| 537 } | 537 } |
| 538 | 538 |
| 539 @override | 539 @override |
| 540 R errorUndefinedBinaryExpression( | 540 R errorUndefinedBinaryExpression( |
| 541 Send node, | 541 Send node, |
| 542 Node left, | 542 Node left, |
| 543 Operator operator, | 543 Operator operator, |
| 544 Node right, | 544 Node right, |
| 545 A arg) { | 545 A arg) { |
| 546 return bulkHandleError(node); | 546 return bulkHandleError(node, arg); |
| 547 } | 547 } |
| 548 | 548 |
| 549 @override | 549 @override |
| 550 R errorUndefinedUnaryExpression( | 550 R errorUndefinedUnaryExpression( |
| 551 Send node, | 551 Send node, |
| 552 Operator operator, | 552 Operator operator, |
| 553 Node expression, | 553 Node expression, |
| 554 A arg) { | 554 A arg) { |
| 555 return bulkHandleError(node); | 555 return bulkHandleError(node, arg); |
| 556 } | 556 } |
| 557 } | 557 } |
| 558 | 558 |
| 559 /// Mixin that implements all `visitXPrefix` methods of [SemanticSendVisitor] by | 559 /// Mixin that implements all `visitXPrefix` methods of [SemanticSendVisitor] by |
| 560 /// delegating to a bulk handler. | 560 /// delegating to a bulk handler. |
| 561 /// | 561 /// |
| 562 /// Use this mixin to provide a trivial implementation for all `visitXPrefix` | 562 /// Use this mixin to provide a trivial implementation for all `visitXPrefix` |
| 563 /// methods. | 563 /// methods. |
| 564 abstract class PrefixBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 564 abstract class PrefixBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 565 R bulkHandleNode(Node node, String message); | 565 R bulkHandleNode(Node node, String message, A arg); |
| 566 | 566 |
| 567 R bulkHandlePrefix(Send node) { | 567 R bulkHandlePrefix(Send node, A arg) { |
| 568 return bulkHandleNode(node, "Prefix expression `$node` unhandled."); | 568 return bulkHandleNode(node, "Prefix expression `$node` unhandled.", arg); |
| 569 } | 569 } |
| 570 | 570 |
| 571 @override | 571 @override |
| 572 R visitDynamicPropertyPrefix( | 572 R visitDynamicPropertyPrefix( |
| 573 Send node, | 573 Send node, |
| 574 Node receiver, | 574 Node receiver, |
| 575 IncDecOperator operator, | 575 IncDecOperator operator, |
| 576 Selector getterSelector, | 576 Selector getterSelector, |
| 577 Selector setterSelector, | 577 Selector setterSelector, |
| 578 A arg) { | 578 A arg) { |
| 579 return bulkHandlePrefix(node); | 579 return bulkHandlePrefix(node, arg); |
| 580 } | 580 } |
| 581 | 581 |
| 582 @override | 582 @override |
| 583 R visitIndexPrefix( | 583 R visitIndexPrefix( |
| 584 Send node, | 584 Send node, |
| 585 Node receiver, | 585 Node receiver, |
| 586 Node index, | 586 Node index, |
| 587 IncDecOperator operator, | 587 IncDecOperator operator, |
| 588 A arg) { | 588 A arg) { |
| 589 return bulkHandlePrefix(node); | 589 return bulkHandlePrefix(node, arg); |
| 590 } | 590 } |
| 591 | 591 |
| 592 @override | 592 @override |
| 593 R visitLocalVariablePrefix( | 593 R visitLocalVariablePrefix( |
| 594 Send node, | 594 Send node, |
| 595 LocalVariableElement variable, | 595 LocalVariableElement variable, |
| 596 IncDecOperator operator, | 596 IncDecOperator operator, |
| 597 A arg) { | 597 A arg) { |
| 598 return bulkHandlePrefix(node); | 598 return bulkHandlePrefix(node, arg); |
| 599 } | 599 } |
| 600 | 600 |
| 601 @override | 601 @override |
| 602 R visitParameterPrefix( | 602 R visitParameterPrefix( |
| 603 Send node, | 603 Send node, |
| 604 ParameterElement parameter, | 604 ParameterElement parameter, |
| 605 IncDecOperator operator, | 605 IncDecOperator operator, |
| 606 A arg) { | 606 A arg) { |
| 607 return bulkHandlePrefix(node); | 607 return bulkHandlePrefix(node, arg); |
| 608 } | 608 } |
| 609 | 609 |
| 610 @override | 610 @override |
| 611 R visitStaticFieldPrefix( | 611 R visitStaticFieldPrefix( |
| 612 Send node, | 612 Send node, |
| 613 FieldElement field, | 613 FieldElement field, |
| 614 IncDecOperator operator, | 614 IncDecOperator operator, |
| 615 A arg) { | 615 A arg) { |
| 616 return bulkHandlePrefix(node); | 616 return bulkHandlePrefix(node, arg); |
| 617 } | 617 } |
| 618 | 618 |
| 619 @override | 619 @override |
| 620 R visitStaticGetterSetterPrefix( | 620 R visitStaticGetterSetterPrefix( |
| 621 Send node, | 621 Send node, |
| 622 FunctionElement getter, | 622 FunctionElement getter, |
| 623 FunctionElement setter, | 623 FunctionElement setter, |
| 624 IncDecOperator operator, | 624 IncDecOperator operator, |
| 625 A arg) { | 625 A arg) { |
| 626 return bulkHandlePrefix(node); | 626 return bulkHandlePrefix(node, arg); |
| 627 } | 627 } |
| 628 | 628 |
| 629 @override | 629 @override |
| 630 R visitStaticMethodSetterPrefix( | 630 R visitStaticMethodSetterPrefix( |
| 631 Send node, | 631 Send node, |
| 632 FunctionElement getter, | 632 FunctionElement getter, |
| 633 FunctionElement setter, | 633 FunctionElement setter, |
| 634 IncDecOperator operator, | 634 IncDecOperator operator, |
| 635 A arg) { | 635 A arg) { |
| 636 return bulkHandlePrefix(node); | 636 return bulkHandlePrefix(node, arg); |
| 637 } | 637 } |
| 638 | 638 |
| 639 @override | 639 @override |
| 640 R visitSuperFieldFieldPrefix( | 640 R visitSuperFieldFieldPrefix( |
| 641 Send node, | 641 Send node, |
| 642 FieldElement readField, | 642 FieldElement readField, |
| 643 FieldElement writtenField, | 643 FieldElement writtenField, |
| 644 IncDecOperator operator, | 644 IncDecOperator operator, |
| 645 A arg) { | 645 A arg) { |
| 646 return bulkHandlePrefix(node); | 646 return bulkHandlePrefix(node, arg); |
| 647 } | 647 } |
| 648 | 648 |
| 649 @override | 649 @override |
| 650 R visitSuperFieldPrefix( | 650 R visitSuperFieldPrefix( |
| 651 Send node, | 651 Send node, |
| 652 FieldElement field, | 652 FieldElement field, |
| 653 IncDecOperator operator, | 653 IncDecOperator operator, |
| 654 A arg) { | 654 A arg) { |
| 655 return bulkHandlePrefix(node); | 655 return bulkHandlePrefix(node, arg); |
| 656 } | 656 } |
| 657 | 657 |
| 658 @override | 658 @override |
| 659 R visitSuperFieldSetterPrefix( | 659 R visitSuperFieldSetterPrefix( |
| 660 Send node, | 660 Send node, |
| 661 FieldElement field, | 661 FieldElement field, |
| 662 FunctionElement setter, | 662 FunctionElement setter, |
| 663 IncDecOperator operator, | 663 IncDecOperator operator, |
| 664 A arg) { | 664 A arg) { |
| 665 return bulkHandlePrefix(node); | 665 return bulkHandlePrefix(node, arg); |
| 666 } | 666 } |
| 667 | 667 |
| 668 @override | 668 @override |
| 669 R visitSuperGetterFieldPrefix( | 669 R visitSuperGetterFieldPrefix( |
| 670 Send node, | 670 Send node, |
| 671 FunctionElement getter, | 671 FunctionElement getter, |
| 672 FieldElement field, | 672 FieldElement field, |
| 673 IncDecOperator operator, | 673 IncDecOperator operator, |
| 674 A arg) { | 674 A arg) { |
| 675 return bulkHandlePrefix(node); | 675 return bulkHandlePrefix(node, arg); |
| 676 } | 676 } |
| 677 | 677 |
| 678 @override | 678 @override |
| 679 R visitSuperGetterSetterPrefix( | 679 R visitSuperGetterSetterPrefix( |
| 680 Send node, | 680 Send node, |
| 681 FunctionElement getter, | 681 FunctionElement getter, |
| 682 FunctionElement setter, | 682 FunctionElement setter, |
| 683 IncDecOperator operator, | 683 IncDecOperator operator, |
| 684 A arg) { | 684 A arg) { |
| 685 return bulkHandlePrefix(node); | 685 return bulkHandlePrefix(node, arg); |
| 686 } | 686 } |
| 687 | 687 |
| 688 @override | 688 @override |
| 689 R visitSuperIndexPrefix( | 689 R visitSuperIndexPrefix( |
| 690 Send node, | 690 Send node, |
| 691 FunctionElement indexFunction, | 691 FunctionElement indexFunction, |
| 692 FunctionElement indexSetFunction, | 692 FunctionElement indexSetFunction, |
| 693 Node index, | 693 Node index, |
| 694 IncDecOperator operator, | 694 IncDecOperator operator, |
| 695 A arg) { | 695 A arg) { |
| 696 return bulkHandlePrefix(node); | 696 return bulkHandlePrefix(node, arg); |
| 697 } | 697 } |
| 698 | 698 |
| 699 @override | 699 @override |
| 700 R visitSuperMethodSetterPrefix( | 700 R visitSuperMethodSetterPrefix( |
| 701 Send node, | 701 Send node, |
| 702 FunctionElement method, | 702 FunctionElement method, |
| 703 FunctionElement setter, | 703 FunctionElement setter, |
| 704 IncDecOperator operator, | 704 IncDecOperator operator, |
| 705 A arg) { | 705 A arg) { |
| 706 return bulkHandlePrefix(node); | 706 return bulkHandlePrefix(node, arg); |
| 707 } | 707 } |
| 708 | 708 |
| 709 @override | 709 @override |
| 710 R visitThisPropertyPrefix( | 710 R visitThisPropertyPrefix( |
| 711 Send node, | 711 Send node, |
| 712 IncDecOperator operator, | 712 IncDecOperator operator, |
| 713 Selector getterSelector, | 713 Selector getterSelector, |
| 714 Selector setterSelector, | 714 Selector setterSelector, |
| 715 A arg) { | 715 A arg) { |
| 716 return bulkHandlePrefix(node); | 716 return bulkHandlePrefix(node, arg); |
| 717 } | 717 } |
| 718 | 718 |
| 719 @override | 719 @override |
| 720 R visitTopLevelFieldPrefix( | 720 R visitTopLevelFieldPrefix( |
| 721 Send node, | 721 Send node, |
| 722 FieldElement field, | 722 FieldElement field, |
| 723 IncDecOperator operator, | 723 IncDecOperator operator, |
| 724 A arg) { | 724 A arg) { |
| 725 return bulkHandlePrefix(node); | 725 return bulkHandlePrefix(node, arg); |
| 726 } | 726 } |
| 727 | 727 |
| 728 @override | 728 @override |
| 729 R visitTopLevelGetterSetterPrefix( | 729 R visitTopLevelGetterSetterPrefix( |
| 730 Send node, | 730 Send node, |
| 731 FunctionElement getter, | 731 FunctionElement getter, |
| 732 FunctionElement setter, | 732 FunctionElement setter, |
| 733 IncDecOperator operator, | 733 IncDecOperator operator, |
| 734 A arg) { | 734 A arg) { |
| 735 return bulkHandlePrefix(node); | 735 return bulkHandlePrefix(node, arg); |
| 736 } | 736 } |
| 737 | 737 |
| 738 @override | 738 @override |
| 739 R visitTopLevelMethodSetterPrefix( | 739 R visitTopLevelMethodSetterPrefix( |
| 740 Send node, | 740 Send node, |
| 741 FunctionElement method, | 741 FunctionElement method, |
| 742 FunctionElement setter, | 742 FunctionElement setter, |
| 743 IncDecOperator operator, | 743 IncDecOperator operator, |
| 744 A arg) { | 744 A arg) { |
| 745 return bulkHandlePrefix(node); | 745 return bulkHandlePrefix(node, arg); |
| 746 } | 746 } |
| 747 } | 747 } |
| 748 | 748 |
| 749 /// Mixin that implements all `visitXPostfix` methods of [SemanticSendVisitor] | 749 /// Mixin that implements all `visitXPostfix` methods of [SemanticSendVisitor] |
| 750 /// by delegating to a bulk handler. | 750 /// by delegating to a bulk handler. |
| 751 /// | 751 /// |
| 752 /// Use this mixin to provide a trivial implementation for all `visitXPostfix` | 752 /// Use this mixin to provide a trivial implementation for all `visitXPostfix` |
| 753 /// methods. | 753 /// methods. |
| 754 abstract class PostfixBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 754 abstract class PostfixBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 755 R bulkHandleNode(Node node, String message); | 755 R bulkHandleNode(Node node, String message, A arg); |
| 756 | 756 |
| 757 R bulkHandlePostfix(Send node) { | 757 R bulkHandlePostfix(Send node, A arg) { |
| 758 return bulkHandleNode(node, "Postfix expression `$node` unhandled."); | 758 return bulkHandleNode(node, "Postfix expression `$node` unhandled.", arg); |
| 759 } | 759 } |
| 760 | 760 |
| 761 @override | 761 @override |
| 762 R visitDynamicPropertyPostfix( | 762 R visitDynamicPropertyPostfix( |
| 763 Send node, | 763 Send node, |
| 764 Node receiver, | 764 Node receiver, |
| 765 IncDecOperator operator, | 765 IncDecOperator operator, |
| 766 Selector getterSelector, | 766 Selector getterSelector, |
| 767 Selector setterSelector, | 767 Selector setterSelector, |
| 768 A arg) { | 768 A arg) { |
| 769 return bulkHandlePostfix(node); | 769 return bulkHandlePostfix(node, arg); |
| 770 } | 770 } |
| 771 | 771 |
| 772 @override | 772 @override |
| 773 R visitIndexPostfix( | 773 R visitIndexPostfix( |
| 774 Send node, | 774 Send node, |
| 775 Node receiver, | 775 Node receiver, |
| 776 Node index, | 776 Node index, |
| 777 IncDecOperator operator, | 777 IncDecOperator operator, |
| 778 A arg) { | 778 A arg) { |
| 779 return bulkHandlePostfix(node); | 779 return bulkHandlePostfix(node, arg); |
| 780 } | 780 } |
| 781 | 781 |
| 782 @override | 782 @override |
| 783 R visitLocalVariablePostfix( | 783 R visitLocalVariablePostfix( |
| 784 Send node, | 784 Send node, |
| 785 LocalVariableElement variable, | 785 LocalVariableElement variable, |
| 786 IncDecOperator operator, | 786 IncDecOperator operator, |
| 787 A arg) { | 787 A arg) { |
| 788 return bulkHandlePostfix(node); | 788 return bulkHandlePostfix(node, arg); |
| 789 } | 789 } |
| 790 | 790 |
| 791 @override | 791 @override |
| 792 R visitParameterPostfix( | 792 R visitParameterPostfix( |
| 793 Send node, | 793 Send node, |
| 794 ParameterElement parameter, | 794 ParameterElement parameter, |
| 795 IncDecOperator operator, | 795 IncDecOperator operator, |
| 796 A arg) { | 796 A arg) { |
| 797 return bulkHandlePostfix(node); | 797 return bulkHandlePostfix(node, arg); |
| 798 } | 798 } |
| 799 | 799 |
| 800 @override | 800 @override |
| 801 R visitStaticFieldPostfix( | 801 R visitStaticFieldPostfix( |
| 802 Send node, | 802 Send node, |
| 803 FieldElement field, | 803 FieldElement field, |
| 804 IncDecOperator operator, | 804 IncDecOperator operator, |
| 805 A arg) { | 805 A arg) { |
| 806 return bulkHandlePostfix(node); | 806 return bulkHandlePostfix(node, arg); |
| 807 } | 807 } |
| 808 | 808 |
| 809 @override | 809 @override |
| 810 R visitStaticGetterSetterPostfix( | 810 R visitStaticGetterSetterPostfix( |
| 811 Send node, | 811 Send node, |
| 812 FunctionElement getter, | 812 FunctionElement getter, |
| 813 FunctionElement setter, | 813 FunctionElement setter, |
| 814 IncDecOperator operator, | 814 IncDecOperator operator, |
| 815 A arg) { | 815 A arg) { |
| 816 return bulkHandlePostfix(node); | 816 return bulkHandlePostfix(node, arg); |
| 817 } | 817 } |
| 818 | 818 |
| 819 @override | 819 @override |
| 820 R visitStaticMethodSetterPostfix( | 820 R visitStaticMethodSetterPostfix( |
| 821 Send node, | 821 Send node, |
| 822 FunctionElement getter, | 822 FunctionElement getter, |
| 823 FunctionElement setter, | 823 FunctionElement setter, |
| 824 IncDecOperator operator, | 824 IncDecOperator operator, |
| 825 A arg) { | 825 A arg) { |
| 826 return bulkHandlePostfix(node); | 826 return bulkHandlePostfix(node, arg); |
| 827 } | 827 } |
| 828 | 828 |
| 829 @override | 829 @override |
| 830 R visitSuperFieldFieldPostfix( | 830 R visitSuperFieldFieldPostfix( |
| 831 Send node, | 831 Send node, |
| 832 FieldElement readField, | 832 FieldElement readField, |
| 833 FieldElement writtenField, | 833 FieldElement writtenField, |
| 834 IncDecOperator operator, | 834 IncDecOperator operator, |
| 835 A arg) { | 835 A arg) { |
| 836 return bulkHandlePostfix(node); | 836 return bulkHandlePostfix(node, arg); |
| 837 } | 837 } |
| 838 | 838 |
| 839 @override | 839 @override |
| 840 R visitSuperFieldPostfix( | 840 R visitSuperFieldPostfix( |
| 841 Send node, | 841 Send node, |
| 842 FieldElement field, | 842 FieldElement field, |
| 843 IncDecOperator operator, | 843 IncDecOperator operator, |
| 844 A arg) { | 844 A arg) { |
| 845 return bulkHandlePostfix(node); | 845 return bulkHandlePostfix(node, arg); |
| 846 } | 846 } |
| 847 | 847 |
| 848 @override | 848 @override |
| 849 R visitSuperFieldSetterPostfix( | 849 R visitSuperFieldSetterPostfix( |
| 850 Send node, | 850 Send node, |
| 851 FieldElement field, | 851 FieldElement field, |
| 852 FunctionElement setter, | 852 FunctionElement setter, |
| 853 IncDecOperator operator, | 853 IncDecOperator operator, |
| 854 A arg) { | 854 A arg) { |
| 855 return bulkHandlePostfix(node); | 855 return bulkHandlePostfix(node, arg); |
| 856 } | 856 } |
| 857 | 857 |
| 858 @override | 858 @override |
| 859 R visitSuperGetterFieldPostfix( | 859 R visitSuperGetterFieldPostfix( |
| 860 Send node, | 860 Send node, |
| 861 FunctionElement getter, | 861 FunctionElement getter, |
| 862 FieldElement field, | 862 FieldElement field, |
| 863 IncDecOperator operator, | 863 IncDecOperator operator, |
| 864 A arg) { | 864 A arg) { |
| 865 return bulkHandlePostfix(node); | 865 return bulkHandlePostfix(node, arg); |
| 866 } | 866 } |
| 867 | 867 |
| 868 @override | 868 @override |
| 869 R visitSuperGetterSetterPostfix( | 869 R visitSuperGetterSetterPostfix( |
| 870 Send node, | 870 Send node, |
| 871 FunctionElement getter, | 871 FunctionElement getter, |
| 872 FunctionElement setter, | 872 FunctionElement setter, |
| 873 IncDecOperator operator, | 873 IncDecOperator operator, |
| 874 A arg) { | 874 A arg) { |
| 875 return bulkHandlePostfix(node); | 875 return bulkHandlePostfix(node, arg); |
| 876 } | 876 } |
| 877 | 877 |
| 878 @override | 878 @override |
| 879 R visitSuperIndexPostfix( | 879 R visitSuperIndexPostfix( |
| 880 Send node, | 880 Send node, |
| 881 FunctionElement indexFunction, | 881 FunctionElement indexFunction, |
| 882 FunctionElement indexSetFunction, | 882 FunctionElement indexSetFunction, |
| 883 Node index, | 883 Node index, |
| 884 IncDecOperator operator, | 884 IncDecOperator operator, |
| 885 A arg) { | 885 A arg) { |
| 886 return bulkHandlePostfix(node); | 886 return bulkHandlePostfix(node, arg); |
| 887 } | 887 } |
| 888 | 888 |
| 889 @override | 889 @override |
| 890 R visitSuperMethodSetterPostfix( | 890 R visitSuperMethodSetterPostfix( |
| 891 Send node, | 891 Send node, |
| 892 FunctionElement method, | 892 FunctionElement method, |
| 893 FunctionElement setter, | 893 FunctionElement setter, |
| 894 IncDecOperator operator, | 894 IncDecOperator operator, |
| 895 A arg) { | 895 A arg) { |
| 896 return bulkHandlePostfix(node); | 896 return bulkHandlePostfix(node, arg); |
| 897 } | 897 } |
| 898 | 898 |
| 899 @override | 899 @override |
| 900 R visitThisPropertyPostfix( | 900 R visitThisPropertyPostfix( |
| 901 Send node, | 901 Send node, |
| 902 IncDecOperator operator, | 902 IncDecOperator operator, |
| 903 Selector getterSelector, | 903 Selector getterSelector, |
| 904 Selector setterSelector, | 904 Selector setterSelector, |
| 905 A arg) { | 905 A arg) { |
| 906 return bulkHandlePostfix(node); | 906 return bulkHandlePostfix(node, arg); |
| 907 } | 907 } |
| 908 | 908 |
| 909 @override | 909 @override |
| 910 R visitTopLevelFieldPostfix( | 910 R visitTopLevelFieldPostfix( |
| 911 Send node, | 911 Send node, |
| 912 FieldElement field, | 912 FieldElement field, |
| 913 IncDecOperator operator, | 913 IncDecOperator operator, |
| 914 A arg) { | 914 A arg) { |
| 915 return bulkHandlePostfix(node); | 915 return bulkHandlePostfix(node, arg); |
| 916 } | 916 } |
| 917 | 917 |
| 918 @override | 918 @override |
| 919 R visitTopLevelGetterSetterPostfix( | 919 R visitTopLevelGetterSetterPostfix( |
| 920 Send node, | 920 Send node, |
| 921 FunctionElement getter, | 921 FunctionElement getter, |
| 922 FunctionElement setter, | 922 FunctionElement setter, |
| 923 IncDecOperator operator, | 923 IncDecOperator operator, |
| 924 A arg) { | 924 A arg) { |
| 925 return bulkHandlePostfix(node); | 925 return bulkHandlePostfix(node, arg); |
| 926 } | 926 } |
| 927 | 927 |
| 928 @override | 928 @override |
| 929 R visitTopLevelMethodSetterPostfix( | 929 R visitTopLevelMethodSetterPostfix( |
| 930 Send node, | 930 Send node, |
| 931 FunctionElement method, | 931 FunctionElement method, |
| 932 FunctionElement setter, | 932 FunctionElement setter, |
| 933 IncDecOperator operator, | 933 IncDecOperator operator, |
| 934 A arg) { | 934 A arg) { |
| 935 return bulkHandlePostfix(node); | 935 return bulkHandlePostfix(node, arg); |
| 936 } | 936 } |
| 937 } | 937 } |
| 938 | 938 |
| 939 /// Mixin that implements all `visitXCompound` methods of [SemanticSendVisitor] | 939 /// Mixin that implements all `visitXCompound` methods of [SemanticSendVisitor] |
| 940 /// by delegating to a bulk handler. | 940 /// by delegating to a bulk handler. |
| 941 /// | 941 /// |
| 942 /// Use this mixin to provide a trivial implementation for all `xCompound` | 942 /// Use this mixin to provide a trivial implementation for all `xCompound` |
| 943 /// methods. | 943 /// methods. |
| 944 abstract class CompoundBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 944 abstract class CompoundBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 945 R bulkHandleNode(Node node, String message); | 945 R bulkHandleNode(Node node, String message, A arg); |
| 946 | 946 |
| 947 R bulkHandleCompound(Send node) { | 947 R bulkHandleCompound(Send node, A arg) { |
| 948 return bulkHandleNode(node, "Compound assignment `$node` unhandled."); | 948 return bulkHandleNode(node, "Compound assignment `$node` unhandled.", arg); |
| 949 } | 949 } |
| 950 | 950 |
| 951 @override | 951 @override |
| 952 R visitDynamicPropertyCompound( | 952 R visitDynamicPropertyCompound( |
| 953 Send node, | 953 Send node, |
| 954 Node receiver, | 954 Node receiver, |
| 955 AssignmentOperator operator, | 955 AssignmentOperator operator, |
| 956 Node rhs, | 956 Node rhs, |
| 957 Selector getterSelector, | 957 Selector getterSelector, |
| 958 Selector setterSelector, | 958 Selector setterSelector, |
| 959 A arg) { | 959 A arg) { |
| 960 return bulkHandleCompound(node); | 960 return bulkHandleCompound(node, arg); |
| 961 } | 961 } |
| 962 | 962 |
| 963 @override | 963 @override |
| 964 R visitLocalVariableCompound( | 964 R visitLocalVariableCompound( |
| 965 Send node, | 965 Send node, |
| 966 LocalVariableElement variable, | 966 LocalVariableElement variable, |
| 967 AssignmentOperator operator, | 967 AssignmentOperator operator, |
| 968 Node rhs, | 968 Node rhs, |
| 969 A arg) { | 969 A arg) { |
| 970 return bulkHandleCompound(node); | 970 return bulkHandleCompound(node, arg); |
| 971 } | 971 } |
| 972 | 972 |
| 973 @override | 973 @override |
| 974 R visitParameterCompound( | 974 R visitParameterCompound( |
| 975 Send node, | 975 Send node, |
| 976 ParameterElement parameter, | 976 ParameterElement parameter, |
| 977 AssignmentOperator operator, | 977 AssignmentOperator operator, |
| 978 Node rhs, | 978 Node rhs, |
| 979 A arg) { | 979 A arg) { |
| 980 return bulkHandleCompound(node); | 980 return bulkHandleCompound(node, arg); |
| 981 } | 981 } |
| 982 | 982 |
| 983 @override | 983 @override |
| 984 R visitStaticFieldCompound( | 984 R visitStaticFieldCompound( |
| 985 Send node, | 985 Send node, |
| 986 FieldElement field, | 986 FieldElement field, |
| 987 AssignmentOperator operator, | 987 AssignmentOperator operator, |
| 988 Node rhs, | 988 Node rhs, |
| 989 A arg) { | 989 A arg) { |
| 990 return bulkHandleCompound(node); | 990 return bulkHandleCompound(node, arg); |
| 991 } | 991 } |
| 992 | 992 |
| 993 @override | 993 @override |
| 994 R visitStaticGetterSetterCompound( | 994 R visitStaticGetterSetterCompound( |
| 995 Send node, | 995 Send node, |
| 996 FunctionElement getter, | 996 FunctionElement getter, |
| 997 FunctionElement setter, | 997 FunctionElement setter, |
| 998 AssignmentOperator operator, | 998 AssignmentOperator operator, |
| 999 Node rhs, | 999 Node rhs, |
| 1000 A arg) { | 1000 A arg) { |
| 1001 return bulkHandleCompound(node); | 1001 return bulkHandleCompound(node, arg); |
| 1002 } | 1002 } |
| 1003 | 1003 |
| 1004 @override | 1004 @override |
| 1005 R visitStaticMethodSetterCompound( | 1005 R visitStaticMethodSetterCompound( |
| 1006 Send node, | 1006 Send node, |
| 1007 FunctionElement method, | 1007 FunctionElement method, |
| 1008 FunctionElement setter, | 1008 FunctionElement setter, |
| 1009 AssignmentOperator operator, | 1009 AssignmentOperator operator, |
| 1010 Node rhs, | 1010 Node rhs, |
| 1011 A arg) { | 1011 A arg) { |
| 1012 return bulkHandleCompound(node); | 1012 return bulkHandleCompound(node, arg); |
| 1013 } | 1013 } |
| 1014 | 1014 |
| 1015 @override | 1015 @override |
| 1016 R visitSuperFieldCompound( | 1016 R visitSuperFieldCompound( |
| 1017 Send node, | 1017 Send node, |
| 1018 FieldElement field, | 1018 FieldElement field, |
| 1019 AssignmentOperator operator, | 1019 AssignmentOperator operator, |
| 1020 Node rhs, | 1020 Node rhs, |
| 1021 A arg) { | 1021 A arg) { |
| 1022 return bulkHandleCompound(node); | 1022 return bulkHandleCompound(node, arg); |
| 1023 } | 1023 } |
| 1024 | 1024 |
| 1025 @override | 1025 @override |
| 1026 R visitSuperFieldSetterCompound( | 1026 R visitSuperFieldSetterCompound( |
| 1027 Send node, | 1027 Send node, |
| 1028 FieldElement field, | 1028 FieldElement field, |
| 1029 FunctionElement setter, | 1029 FunctionElement setter, |
| 1030 AssignmentOperator operator, | 1030 AssignmentOperator operator, |
| 1031 Node rhs, | 1031 Node rhs, |
| 1032 A arg) { | 1032 A arg) { |
| 1033 return bulkHandleCompound(node); | 1033 return bulkHandleCompound(node, arg); |
| 1034 } | 1034 } |
| 1035 | 1035 |
| 1036 @override | 1036 @override |
| 1037 R visitSuperGetterFieldCompound( | 1037 R visitSuperGetterFieldCompound( |
| 1038 Send node, | 1038 Send node, |
| 1039 FunctionElement getter, | 1039 FunctionElement getter, |
| 1040 FieldElement field, | 1040 FieldElement field, |
| 1041 AssignmentOperator operator, | 1041 AssignmentOperator operator, |
| 1042 Node rhs, | 1042 Node rhs, |
| 1043 A arg) { | 1043 A arg) { |
| 1044 return bulkHandleCompound(node); | 1044 return bulkHandleCompound(node, arg); |
| 1045 } | 1045 } |
| 1046 | 1046 |
| 1047 @override | 1047 @override |
| 1048 R visitSuperGetterSetterCompound( | 1048 R visitSuperGetterSetterCompound( |
| 1049 Send node, | 1049 Send node, |
| 1050 FunctionElement getter, | 1050 FunctionElement getter, |
| 1051 FunctionElement setter, | 1051 FunctionElement setter, |
| 1052 AssignmentOperator operator, | 1052 AssignmentOperator operator, |
| 1053 Node rhs, | 1053 Node rhs, |
| 1054 A arg) { | 1054 A arg) { |
| 1055 return bulkHandleCompound(node); | 1055 return bulkHandleCompound(node, arg); |
| 1056 } | 1056 } |
| 1057 | 1057 |
| 1058 @override | 1058 @override |
| 1059 R visitSuperMethodSetterCompound( | 1059 R visitSuperMethodSetterCompound( |
| 1060 Send node, | 1060 Send node, |
| 1061 FunctionElement method, | 1061 FunctionElement method, |
| 1062 FunctionElement setter, | 1062 FunctionElement setter, |
| 1063 AssignmentOperator operator, | 1063 AssignmentOperator operator, |
| 1064 Node rhs, | 1064 Node rhs, |
| 1065 A arg) { | 1065 A arg) { |
| 1066 return bulkHandleCompound(node); | 1066 return bulkHandleCompound(node, arg); |
| 1067 } | 1067 } |
| 1068 | 1068 |
| 1069 @override | 1069 @override |
| 1070 R visitThisPropertyCompound( | 1070 R visitThisPropertyCompound( |
| 1071 Send node, | 1071 Send node, |
| 1072 AssignmentOperator operator, | 1072 AssignmentOperator operator, |
| 1073 Node rhs, | 1073 Node rhs, |
| 1074 Selector getterSelector, | 1074 Selector getterSelector, |
| 1075 Selector setterSelector, | 1075 Selector setterSelector, |
| 1076 A arg) { | 1076 A arg) { |
| 1077 return bulkHandleCompound(node); | 1077 return bulkHandleCompound(node, arg); |
| 1078 } | 1078 } |
| 1079 | 1079 |
| 1080 @override | 1080 @override |
| 1081 R visitTopLevelFieldCompound( | 1081 R visitTopLevelFieldCompound( |
| 1082 Send node, | 1082 Send node, |
| 1083 FieldElement field, | 1083 FieldElement field, |
| 1084 AssignmentOperator operator, | 1084 AssignmentOperator operator, |
| 1085 Node rhs, | 1085 Node rhs, |
| 1086 A arg) { | 1086 A arg) { |
| 1087 return bulkHandleCompound(node); | 1087 return bulkHandleCompound(node, arg); |
| 1088 } | 1088 } |
| 1089 | 1089 |
| 1090 @override | 1090 @override |
| 1091 R visitTopLevelGetterSetterCompound( | 1091 R visitTopLevelGetterSetterCompound( |
| 1092 Send node, | 1092 Send node, |
| 1093 FunctionElement getter, | 1093 FunctionElement getter, |
| 1094 FunctionElement setter, | 1094 FunctionElement setter, |
| 1095 AssignmentOperator operator, | 1095 AssignmentOperator operator, |
| 1096 Node rhs, | 1096 Node rhs, |
| 1097 A arg) { | 1097 A arg) { |
| 1098 return bulkHandleCompound(node); | 1098 return bulkHandleCompound(node, arg); |
| 1099 } | 1099 } |
| 1100 | 1100 |
| 1101 @override | 1101 @override |
| 1102 R visitTopLevelMethodSetterCompound( | 1102 R visitTopLevelMethodSetterCompound( |
| 1103 Send node, | 1103 Send node, |
| 1104 FunctionElement method, | 1104 FunctionElement method, |
| 1105 FunctionElement setter, | 1105 FunctionElement setter, |
| 1106 AssignmentOperator operator, | 1106 AssignmentOperator operator, |
| 1107 Node rhs, | 1107 Node rhs, |
| 1108 A arg) { | 1108 A arg) { |
| 1109 return bulkHandleCompound(node); | 1109 return bulkHandleCompound(node, arg); |
| 1110 } | 1110 } |
| 1111 } | 1111 } |
| 1112 | 1112 |
| 1113 /// Mixin that implements all `visitXInvoke` methods of [SemanticSendVisitor] by | 1113 /// Mixin that implements all `visitXInvoke` methods of [SemanticSendVisitor] by |
| 1114 /// delegating to a bulk handler. | 1114 /// delegating to a bulk handler. |
| 1115 /// | 1115 /// |
| 1116 /// Use this mixin to provide a trivial implementation for all `visitXInvoke` | 1116 /// Use this mixin to provide a trivial implementation for all `visitXInvoke` |
| 1117 /// methods. | 1117 /// methods. |
| 1118 abstract class InvokeBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1118 abstract class InvokeBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1119 R bulkHandleNode(Node node, String message); | 1119 R bulkHandleNode(Node node, String message, A arg); |
| 1120 | 1120 |
| 1121 R bulkHandleInvoke(Send node) { | 1121 R bulkHandleInvoke(Send node, A arg) { |
| 1122 return bulkHandleNode(node, "Invocation `$node` unhandled."); | 1122 return bulkHandleNode(node, "Invocation `$node` unhandled.", arg); |
| 1123 } | 1123 } |
| 1124 | 1124 |
| 1125 @override | 1125 @override |
| 1126 R visitClassTypeLiteralInvoke( | 1126 R visitClassTypeLiteralInvoke( |
| 1127 Send node, | 1127 Send node, |
| 1128 TypeConstantExpression constant, | 1128 TypeConstantExpression constant, |
| 1129 NodeList arguments, | 1129 NodeList arguments, |
| 1130 Selector selector, | 1130 Selector selector, |
| 1131 A arg) { | 1131 A arg) { |
| 1132 return bulkHandleInvoke(node); | 1132 return bulkHandleInvoke(node, arg); |
| 1133 } | 1133 } |
| 1134 | 1134 |
| 1135 @override | 1135 @override |
| 1136 R visitDynamicPropertyInvoke( | 1136 R visitDynamicPropertyInvoke( |
| 1137 Send node, | 1137 Send node, |
| 1138 Node receiver, | 1138 Node receiver, |
| 1139 NodeList arguments, | 1139 NodeList arguments, |
| 1140 Selector selector, | 1140 Selector selector, |
| 1141 A arg) { | 1141 A arg) { |
| 1142 return bulkHandleInvoke(node); | 1142 return bulkHandleInvoke(node, arg); |
| 1143 } | 1143 } |
| 1144 | 1144 |
| 1145 @override | 1145 @override |
| 1146 R visitDynamicTypeLiteralInvoke( | 1146 R visitDynamicTypeLiteralInvoke( |
| 1147 Send node, | 1147 Send node, |
| 1148 TypeConstantExpression constant, | 1148 TypeConstantExpression constant, |
| 1149 NodeList arguments, | 1149 NodeList arguments, |
| 1150 Selector selector, | 1150 Selector selector, |
| 1151 A arg) { | 1151 A arg) { |
| 1152 return bulkHandleInvoke(node); | 1152 return bulkHandleInvoke(node, arg); |
| 1153 } | 1153 } |
| 1154 | 1154 |
| 1155 @override | 1155 @override |
| 1156 R visitExpressionInvoke( | 1156 R visitExpressionInvoke( |
| 1157 Send node, | 1157 Send node, |
| 1158 Node expression, | 1158 Node expression, |
| 1159 NodeList arguments, | 1159 NodeList arguments, |
| 1160 Selector selector, | 1160 Selector selector, |
| 1161 A arg) { | 1161 A arg) { |
| 1162 return bulkHandleInvoke(node); | 1162 return bulkHandleInvoke(node, arg); |
| 1163 } | 1163 } |
| 1164 | 1164 |
| 1165 @override | 1165 @override |
| 1166 R visitLocalFunctionInvoke( | 1166 R visitLocalFunctionInvoke( |
| 1167 Send node, | 1167 Send node, |
| 1168 LocalFunctionElement function, | 1168 LocalFunctionElement function, |
| 1169 NodeList arguments, | 1169 NodeList arguments, |
| 1170 Selector selector, | 1170 Selector selector, |
| 1171 A arg) { | 1171 A arg) { |
| 1172 return bulkHandleInvoke(node); | 1172 return bulkHandleInvoke(node, arg); |
| 1173 } | 1173 } |
| 1174 | 1174 |
| 1175 @override | 1175 @override |
| 1176 R visitLocalVariableInvoke( | 1176 R visitLocalVariableInvoke( |
| 1177 Send node, | 1177 Send node, |
| 1178 LocalVariableElement variable, | 1178 LocalVariableElement variable, |
| 1179 NodeList arguments, | 1179 NodeList arguments, |
| 1180 Selector selector, | 1180 Selector selector, |
| 1181 A arg) { | 1181 A arg) { |
| 1182 return bulkHandleInvoke(node); | 1182 return bulkHandleInvoke(node, arg); |
| 1183 } | 1183 } |
| 1184 | 1184 |
| 1185 @override | 1185 @override |
| 1186 R visitParameterInvoke( | 1186 R visitParameterInvoke( |
| 1187 Send node, | 1187 Send node, |
| 1188 ParameterElement parameter, | 1188 ParameterElement parameter, |
| 1189 NodeList arguments, | 1189 NodeList arguments, |
| 1190 Selector selector, | 1190 Selector selector, |
| 1191 A arg) { | 1191 A arg) { |
| 1192 return bulkHandleInvoke(node); | 1192 return bulkHandleInvoke(node, arg); |
| 1193 } | 1193 } |
| 1194 | 1194 |
| 1195 @override | 1195 @override |
| 1196 R visitStaticFieldInvoke( | 1196 R visitStaticFieldInvoke( |
| 1197 Send node, | 1197 Send node, |
| 1198 FieldElement field, | 1198 FieldElement field, |
| 1199 NodeList arguments, | 1199 NodeList arguments, |
| 1200 Selector selector, | 1200 Selector selector, |
| 1201 A arg) { | 1201 A arg) { |
| 1202 return bulkHandleInvoke(node); | 1202 return bulkHandleInvoke(node, arg); |
| 1203 } | 1203 } |
| 1204 | 1204 |
| 1205 @override | 1205 @override |
| 1206 R visitStaticFunctionInvoke( | 1206 R visitStaticFunctionInvoke( |
| 1207 Send node, | 1207 Send node, |
| 1208 MethodElement function, | 1208 MethodElement function, |
| 1209 NodeList arguments, | 1209 NodeList arguments, |
| 1210 Selector selector, | 1210 Selector selector, |
| 1211 A arg) { | 1211 A arg) { |
| 1212 return bulkHandleInvoke(node); | 1212 return bulkHandleInvoke(node, arg); |
| 1213 } | 1213 } |
| 1214 | 1214 |
| 1215 @override | 1215 @override |
| 1216 R visitStaticGetterInvoke( | 1216 R visitStaticGetterInvoke( |
| 1217 Send node, | 1217 Send node, |
| 1218 FunctionElement getter, | 1218 FunctionElement getter, |
| 1219 NodeList arguments, | 1219 NodeList arguments, |
| 1220 Selector selector, | 1220 Selector selector, |
| 1221 A arg) { | 1221 A arg) { |
| 1222 return bulkHandleInvoke(node); | 1222 return bulkHandleInvoke(node, arg); |
| 1223 } | 1223 } |
| 1224 | 1224 |
| 1225 @override | 1225 @override |
| 1226 R visitSuperFieldInvoke( | 1226 R visitSuperFieldInvoke( |
| 1227 Send node, | 1227 Send node, |
| 1228 FieldElement field, | 1228 FieldElement field, |
| 1229 NodeList arguments, | 1229 NodeList arguments, |
| 1230 Selector selector, | 1230 Selector selector, |
| 1231 A arg) { | 1231 A arg) { |
| 1232 return bulkHandleInvoke(node); | 1232 return bulkHandleInvoke(node, arg); |
| 1233 } | 1233 } |
| 1234 | 1234 |
| 1235 @override | 1235 @override |
| 1236 R visitSuperGetterInvoke( | 1236 R visitSuperGetterInvoke( |
| 1237 Send node, | 1237 Send node, |
| 1238 FunctionElement getter, | 1238 FunctionElement getter, |
| 1239 NodeList arguments, | 1239 NodeList arguments, |
| 1240 Selector selector, | 1240 Selector selector, |
| 1241 A arg) { | 1241 A arg) { |
| 1242 return bulkHandleInvoke(node); | 1242 return bulkHandleInvoke(node, arg); |
| 1243 } | 1243 } |
| 1244 | 1244 |
| 1245 @override | 1245 @override |
| 1246 R visitSuperMethodInvoke( | 1246 R visitSuperMethodInvoke( |
| 1247 Send node, | 1247 Send node, |
| 1248 MethodElement method, | 1248 MethodElement method, |
| 1249 NodeList arguments, | 1249 NodeList arguments, |
| 1250 Selector selector, | 1250 Selector selector, |
| 1251 A arg) { | 1251 A arg) { |
| 1252 return bulkHandleInvoke(node); | 1252 return bulkHandleInvoke(node, arg); |
| 1253 } | 1253 } |
| 1254 | 1254 |
| 1255 @override | 1255 @override |
| 1256 R visitThisInvoke( | 1256 R visitThisInvoke( |
| 1257 Send node, | 1257 Send node, |
| 1258 NodeList arguments, | 1258 NodeList arguments, |
| 1259 Selector selector, | 1259 Selector selector, |
| 1260 A arg) { | 1260 A arg) { |
| 1261 return bulkHandleInvoke(node); | 1261 return bulkHandleInvoke(node, arg); |
| 1262 } | 1262 } |
| 1263 | 1263 |
| 1264 @override | 1264 @override |
| 1265 R visitThisPropertyInvoke( | 1265 R visitThisPropertyInvoke( |
| 1266 Send node, | 1266 Send node, |
| 1267 NodeList arguments, | 1267 NodeList arguments, |
| 1268 Selector selector, | 1268 Selector selector, |
| 1269 A arg) { | 1269 A arg) { |
| 1270 return bulkHandleInvoke(node); | 1270 return bulkHandleInvoke(node, arg); |
| 1271 } | 1271 } |
| 1272 | 1272 |
| 1273 @override | 1273 @override |
| 1274 R visitTopLevelFieldInvoke( | 1274 R visitTopLevelFieldInvoke( |
| 1275 Send node, | 1275 Send node, |
| 1276 FieldElement field, | 1276 FieldElement field, |
| 1277 NodeList arguments, | 1277 NodeList arguments, |
| 1278 Selector selector, | 1278 Selector selector, |
| 1279 A arg) { | 1279 A arg) { |
| 1280 return bulkHandleInvoke(node); | 1280 return bulkHandleInvoke(node, arg); |
| 1281 } | 1281 } |
| 1282 | 1282 |
| 1283 @override | 1283 @override |
| 1284 R visitTopLevelFunctionInvoke( | 1284 R visitTopLevelFunctionInvoke( |
| 1285 Send node, | 1285 Send node, |
| 1286 MethodElement function, | 1286 MethodElement function, |
| 1287 NodeList arguments, | 1287 NodeList arguments, |
| 1288 Selector selector, | 1288 Selector selector, |
| 1289 A arg) { | 1289 A arg) { |
| 1290 return bulkHandleInvoke(node); | 1290 return bulkHandleInvoke(node, arg); |
| 1291 } | 1291 } |
| 1292 | 1292 |
| 1293 @override | 1293 @override |
| 1294 R visitTopLevelGetterInvoke( | 1294 R visitTopLevelGetterInvoke( |
| 1295 Send node, | 1295 Send node, |
| 1296 FunctionElement getter, | 1296 FunctionElement getter, |
| 1297 NodeList arguments, | 1297 NodeList arguments, |
| 1298 Selector selector, | 1298 Selector selector, |
| 1299 A arg) { | 1299 A arg) { |
| 1300 return bulkHandleInvoke(node); | 1300 return bulkHandleInvoke(node, arg); |
| 1301 } | 1301 } |
| 1302 | 1302 |
| 1303 @override | 1303 @override |
| 1304 R visitTypeVariableTypeLiteralInvoke( | 1304 R visitTypeVariableTypeLiteralInvoke( |
| 1305 Send node, | 1305 Send node, |
| 1306 TypeVariableElement element, | 1306 TypeVariableElement element, |
| 1307 NodeList arguments, | 1307 NodeList arguments, |
| 1308 Selector selector, | 1308 Selector selector, |
| 1309 A arg) { | 1309 A arg) { |
| 1310 return bulkHandleInvoke(node); | 1310 return bulkHandleInvoke(node, arg); |
| 1311 } | 1311 } |
| 1312 | 1312 |
| 1313 @override | 1313 @override |
| 1314 R visitTypedefTypeLiteralInvoke( | 1314 R visitTypedefTypeLiteralInvoke( |
| 1315 Send node, | 1315 Send node, |
| 1316 TypeConstantExpression constant, | 1316 TypeConstantExpression constant, |
| 1317 NodeList arguments, | 1317 NodeList arguments, |
| 1318 Selector selector, | 1318 Selector selector, |
| 1319 A arg) { | 1319 A arg) { |
| 1320 return bulkHandleInvoke(node); | 1320 return bulkHandleInvoke(node, arg); |
| 1321 } | 1321 } |
| 1322 | 1322 |
| 1323 @override | 1323 @override |
| 1324 R visitConstantInvoke( | 1324 R visitConstantInvoke( |
| 1325 Send node, | 1325 Send node, |
| 1326 ConstantExpression constant, | 1326 ConstantExpression constant, |
| 1327 NodeList arguments, | 1327 NodeList arguments, |
| 1328 Selector selector, | 1328 Selector selector, |
| 1329 A arg) { | 1329 A arg) { |
| 1330 return bulkHandleInvoke(node); | 1330 return bulkHandleInvoke(node, arg); |
| 1331 } | 1331 } |
| 1332 } | 1332 } |
| 1333 | 1333 |
| 1334 /// Mixin that implements all `visitXGet` methods of [SemanticSendVisitor] by | 1334 /// Mixin that implements all `visitXGet` methods of [SemanticSendVisitor] by |
| 1335 /// delegating to a bulk handler. | 1335 /// delegating to a bulk handler. |
| 1336 /// | 1336 /// |
| 1337 /// Use this mixin to provide a trivial implementation for all `visitXGet` | 1337 /// Use this mixin to provide a trivial implementation for all `visitXGet` |
| 1338 /// methods. | 1338 /// methods. |
| 1339 abstract class GetBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1339 abstract class GetBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1340 R bulkHandleNode(Node node, String message); | 1340 R bulkHandleNode(Node node, String message, A arg); |
| 1341 | 1341 |
| 1342 R bulkHandleGet(Node node) { | 1342 R bulkHandleGet(Node node, A arg) { |
| 1343 return bulkHandleNode(node, "Read `$node` unhandled."); | 1343 return bulkHandleNode(node, "Read `$node` unhandled.", arg); |
| 1344 } | 1344 } |
| 1345 | 1345 |
| 1346 @override | 1346 @override |
| 1347 R visitClassTypeLiteralGet( | 1347 R visitClassTypeLiteralGet( |
| 1348 Send node, | 1348 Send node, |
| 1349 TypeConstantExpression constant, | 1349 TypeConstantExpression constant, |
| 1350 A arg) { | 1350 A arg) { |
| 1351 return bulkHandleGet(node); | 1351 return bulkHandleGet(node, arg); |
| 1352 } | 1352 } |
| 1353 | 1353 |
| 1354 @override | 1354 @override |
| 1355 R visitDynamicPropertyGet( | 1355 R visitDynamicPropertyGet( |
| 1356 Send node, | 1356 Send node, |
| 1357 Node receiver, | 1357 Node receiver, |
| 1358 Selector selector, | 1358 Selector selector, |
| 1359 A arg) { | 1359 A arg) { |
| 1360 return bulkHandleGet(node); | 1360 return bulkHandleGet(node, arg); |
| 1361 } | 1361 } |
| 1362 | 1362 |
| 1363 @override | 1363 @override |
| 1364 R visitDynamicTypeLiteralGet( | 1364 R visitDynamicTypeLiteralGet( |
| 1365 Send node, | 1365 Send node, |
| 1366 TypeConstantExpression constant, | 1366 TypeConstantExpression constant, |
| 1367 A arg) { | 1367 A arg) { |
| 1368 return bulkHandleGet(node); | 1368 return bulkHandleGet(node, arg); |
| 1369 } | 1369 } |
| 1370 | 1370 |
| 1371 @override | 1371 @override |
| 1372 R visitLocalFunctionGet( | 1372 R visitLocalFunctionGet( |
| 1373 Send node, | 1373 Send node, |
| 1374 LocalFunctionElement function, | 1374 LocalFunctionElement function, |
| 1375 A arg) { | 1375 A arg) { |
| 1376 return bulkHandleGet(node); | 1376 return bulkHandleGet(node, arg); |
| 1377 } | 1377 } |
| 1378 | 1378 |
| 1379 @override | 1379 @override |
| 1380 R visitLocalVariableGet( | 1380 R visitLocalVariableGet( |
| 1381 Send node, | 1381 Send node, |
| 1382 LocalVariableElement variable, | 1382 LocalVariableElement variable, |
| 1383 A arg) { | 1383 A arg) { |
| 1384 return bulkHandleGet(node); | 1384 return bulkHandleGet(node, arg); |
| 1385 } | 1385 } |
| 1386 | 1386 |
| 1387 @override | 1387 @override |
| 1388 R visitParameterGet( | 1388 R visitParameterGet( |
| 1389 Send node, | 1389 Send node, |
| 1390 ParameterElement parameter, | 1390 ParameterElement parameter, |
| 1391 A arg) { | 1391 A arg) { |
| 1392 return bulkHandleGet(node); | 1392 return bulkHandleGet(node, arg); |
| 1393 } | 1393 } |
| 1394 | 1394 |
| 1395 @override | 1395 @override |
| 1396 R visitStaticFieldGet( | 1396 R visitStaticFieldGet( |
| 1397 Send node, | 1397 Send node, |
| 1398 FieldElement field, | 1398 FieldElement field, |
| 1399 A arg) { | 1399 A arg) { |
| 1400 return bulkHandleGet(node); | 1400 return bulkHandleGet(node, arg); |
| 1401 } | 1401 } |
| 1402 | 1402 |
| 1403 @override | 1403 @override |
| 1404 R visitStaticFunctionGet( | 1404 R visitStaticFunctionGet( |
| 1405 Send node, | 1405 Send node, |
| 1406 MethodElement function, | 1406 MethodElement function, |
| 1407 A arg) { | 1407 A arg) { |
| 1408 return bulkHandleGet(node); | 1408 return bulkHandleGet(node, arg); |
| 1409 } | 1409 } |
| 1410 | 1410 |
| 1411 @override | 1411 @override |
| 1412 R visitStaticGetterGet( | 1412 R visitStaticGetterGet( |
| 1413 Send node, | 1413 Send node, |
| 1414 FunctionElement getter, | 1414 FunctionElement getter, |
| 1415 A arg) { | 1415 A arg) { |
| 1416 return bulkHandleGet(node); | 1416 return bulkHandleGet(node, arg); |
| 1417 } | 1417 } |
| 1418 | 1418 |
| 1419 @override | 1419 @override |
| 1420 R visitSuperFieldGet( | 1420 R visitSuperFieldGet( |
| 1421 Send node, | 1421 Send node, |
| 1422 FieldElement field, | 1422 FieldElement field, |
| 1423 A arg) { | 1423 A arg) { |
| 1424 return bulkHandleGet(node); | 1424 return bulkHandleGet(node, arg); |
| 1425 } | 1425 } |
| 1426 | 1426 |
| 1427 @override | 1427 @override |
| 1428 R visitSuperGetterGet( | 1428 R visitSuperGetterGet( |
| 1429 Send node, | 1429 Send node, |
| 1430 FunctionElement getter, | 1430 FunctionElement getter, |
| 1431 A arg) { | 1431 A arg) { |
| 1432 return bulkHandleGet(node); | 1432 return bulkHandleGet(node, arg); |
| 1433 } | 1433 } |
| 1434 | 1434 |
| 1435 @override | 1435 @override |
| 1436 R visitSuperMethodGet( | 1436 R visitSuperMethodGet( |
| 1437 Send node, | 1437 Send node, |
| 1438 MethodElement method, | 1438 MethodElement method, |
| 1439 A arg) { | 1439 A arg) { |
| 1440 return bulkHandleGet(node); | 1440 return bulkHandleGet(node, arg); |
| 1441 } | 1441 } |
| 1442 | 1442 |
| 1443 @override | 1443 @override |
| 1444 R visitThisGet(Identifier node, A arg) { | 1444 R visitThisGet(Identifier node, A arg) { |
| 1445 return bulkHandleGet(node); | 1445 return bulkHandleGet(node, arg); |
| 1446 } | 1446 } |
| 1447 | 1447 |
| 1448 @override | 1448 @override |
| 1449 R visitThisPropertyGet( | 1449 R visitThisPropertyGet( |
| 1450 Send node, | 1450 Send node, |
| 1451 Selector selector, | 1451 Selector selector, |
| 1452 A arg) { | 1452 A arg) { |
| 1453 return bulkHandleGet(node); | 1453 return bulkHandleGet(node, arg); |
| 1454 } | 1454 } |
| 1455 | 1455 |
| 1456 @override | 1456 @override |
| 1457 R visitTopLevelFieldGet( | 1457 R visitTopLevelFieldGet( |
| 1458 Send node, | 1458 Send node, |
| 1459 FieldElement field, | 1459 FieldElement field, |
| 1460 A arg) { | 1460 A arg) { |
| 1461 return bulkHandleGet(node); | 1461 return bulkHandleGet(node, arg); |
| 1462 } | 1462 } |
| 1463 | 1463 |
| 1464 @override | 1464 @override |
| 1465 R visitTopLevelFunctionGet( | 1465 R visitTopLevelFunctionGet( |
| 1466 Send node, | 1466 Send node, |
| 1467 MethodElement function, | 1467 MethodElement function, |
| 1468 A arg) { | 1468 A arg) { |
| 1469 return bulkHandleGet(node); | 1469 return bulkHandleGet(node, arg); |
| 1470 } | 1470 } |
| 1471 | 1471 |
| 1472 @override | 1472 @override |
| 1473 R visitTopLevelGetterGet( | 1473 R visitTopLevelGetterGet( |
| 1474 Send node, | 1474 Send node, |
| 1475 FunctionElement getter, | 1475 FunctionElement getter, |
| 1476 A arg) { | 1476 A arg) { |
| 1477 return bulkHandleGet(node); | 1477 return bulkHandleGet(node, arg); |
| 1478 } | 1478 } |
| 1479 | 1479 |
| 1480 @override | 1480 @override |
| 1481 R visitTypeVariableTypeLiteralGet( | 1481 R visitTypeVariableTypeLiteralGet( |
| 1482 Send node, | 1482 Send node, |
| 1483 TypeVariableElement element, | 1483 TypeVariableElement element, |
| 1484 A arg) { | 1484 A arg) { |
| 1485 return bulkHandleGet(node); | 1485 return bulkHandleGet(node, arg); |
| 1486 } | 1486 } |
| 1487 | 1487 |
| 1488 @override | 1488 @override |
| 1489 R visitTypedefTypeLiteralGet( | 1489 R visitTypedefTypeLiteralGet( |
| 1490 Send node, | 1490 Send node, |
| 1491 TypeConstantExpression constant, | 1491 TypeConstantExpression constant, |
| 1492 A arg) { | 1492 A arg) { |
| 1493 return bulkHandleGet(node); | 1493 return bulkHandleGet(node, arg); |
| 1494 } | 1494 } |
| 1495 | 1495 |
| 1496 @override | 1496 @override |
| 1497 R visitConstantGet( | 1497 R visitConstantGet( |
| 1498 Send node, | 1498 Send node, |
| 1499 TypeConstantExpression constant, | 1499 TypeConstantExpression constant, |
| 1500 A arg) { | 1500 A arg) { |
| 1501 return bulkHandleGet(node); | 1501 return bulkHandleGet(node, arg); |
| 1502 } | 1502 } |
| 1503 } | 1503 } |
| 1504 | 1504 |
| 1505 /// Mixin that implements all `visitXSet` methods of [SemanticSendVisitor] by | 1505 /// Mixin that implements all `visitXSet` methods of [SemanticSendVisitor] by |
| 1506 /// delegating to a bulk handler. | 1506 /// delegating to a bulk handler. |
| 1507 /// | 1507 /// |
| 1508 /// Use this mixin to provide a trivial implementation for all `visitXSet` | 1508 /// Use this mixin to provide a trivial implementation for all `visitXSet` |
| 1509 /// methods. | 1509 /// methods. |
| 1510 abstract class SetBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1510 abstract class SetBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1511 R bulkHandleNode(Node node, String message); | 1511 R bulkHandleNode(Node node, String message, A arg); |
| 1512 | 1512 |
| 1513 R bulkHandleSet(Send node) { | 1513 R bulkHandleSet(Send node, A arg) { |
| 1514 return bulkHandleNode(node, "Assignment `$node` unhandled."); | 1514 return bulkHandleNode(node, "Assignment `$node` unhandled.", arg); |
| 1515 } | 1515 } |
| 1516 | 1516 |
| 1517 @override | 1517 @override |
| 1518 R visitDynamicPropertySet( | 1518 R visitDynamicPropertySet( |
| 1519 SendSet node, | 1519 SendSet node, |
| 1520 Node receiver, | 1520 Node receiver, |
| 1521 Selector selector, | 1521 Selector selector, |
| 1522 Node rhs, | 1522 Node rhs, |
| 1523 A arg) { | 1523 A arg) { |
| 1524 return bulkHandleSet(node); | 1524 return bulkHandleSet(node, arg); |
| 1525 } | 1525 } |
| 1526 | 1526 |
| 1527 @override | 1527 @override |
| 1528 R visitLocalVariableSet( | 1528 R visitLocalVariableSet( |
| 1529 SendSet node, | 1529 SendSet node, |
| 1530 LocalVariableElement variable, | 1530 LocalVariableElement variable, |
| 1531 Node rhs, | 1531 Node rhs, |
| 1532 A arg) { | 1532 A arg) { |
| 1533 return bulkHandleSet(node); | 1533 return bulkHandleSet(node, arg); |
| 1534 } | 1534 } |
| 1535 | 1535 |
| 1536 @override | 1536 @override |
| 1537 R visitParameterSet( | 1537 R visitParameterSet( |
| 1538 SendSet node, | 1538 SendSet node, |
| 1539 ParameterElement parameter, | 1539 ParameterElement parameter, |
| 1540 Node rhs, | 1540 Node rhs, |
| 1541 A arg) { | 1541 A arg) { |
| 1542 return bulkHandleSet(node); | 1542 return bulkHandleSet(node, arg); |
| 1543 } | 1543 } |
| 1544 | 1544 |
| 1545 @override | 1545 @override |
| 1546 R visitStaticFieldSet( | 1546 R visitStaticFieldSet( |
| 1547 SendSet node, | 1547 SendSet node, |
| 1548 FieldElement field, | 1548 FieldElement field, |
| 1549 Node rhs, | 1549 Node rhs, |
| 1550 A arg) { | 1550 A arg) { |
| 1551 return bulkHandleSet(node); | 1551 return bulkHandleSet(node, arg); |
| 1552 } | 1552 } |
| 1553 | 1553 |
| 1554 @override | 1554 @override |
| 1555 R visitStaticSetterSet( | 1555 R visitStaticSetterSet( |
| 1556 SendSet node, | 1556 SendSet node, |
| 1557 FunctionElement setter, | 1557 FunctionElement setter, |
| 1558 Node rhs, | 1558 Node rhs, |
| 1559 A arg) { | 1559 A arg) { |
| 1560 return bulkHandleSet(node); | 1560 return bulkHandleSet(node, arg); |
| 1561 } | 1561 } |
| 1562 | 1562 |
| 1563 @override | 1563 @override |
| 1564 R visitSuperFieldSet( | 1564 R visitSuperFieldSet( |
| 1565 SendSet node, | 1565 SendSet node, |
| 1566 FieldElement field, | 1566 FieldElement field, |
| 1567 Node rhs, | 1567 Node rhs, |
| 1568 A arg) { | 1568 A arg) { |
| 1569 return bulkHandleSet(node); | 1569 return bulkHandleSet(node, arg); |
| 1570 } | 1570 } |
| 1571 | 1571 |
| 1572 @override | 1572 @override |
| 1573 R visitSuperSetterSet( | 1573 R visitSuperSetterSet( |
| 1574 SendSet node, | 1574 SendSet node, |
| 1575 FunctionElement setter, | 1575 FunctionElement setter, |
| 1576 Node rhs, | 1576 Node rhs, |
| 1577 A arg) { | 1577 A arg) { |
| 1578 return bulkHandleSet(node); | 1578 return bulkHandleSet(node, arg); |
| 1579 } | 1579 } |
| 1580 | 1580 |
| 1581 @override | 1581 @override |
| 1582 R visitThisPropertySet( | 1582 R visitThisPropertySet( |
| 1583 SendSet node, | 1583 SendSet node, |
| 1584 Selector selector, | 1584 Selector selector, |
| 1585 Node rhs, | 1585 Node rhs, |
| 1586 A arg) { | 1586 A arg) { |
| 1587 return bulkHandleSet(node); | 1587 return bulkHandleSet(node, arg); |
| 1588 } | 1588 } |
| 1589 | 1589 |
| 1590 @override | 1590 @override |
| 1591 R visitTopLevelFieldSet( | 1591 R visitTopLevelFieldSet( |
| 1592 SendSet node, | 1592 SendSet node, |
| 1593 FieldElement field, | 1593 FieldElement field, |
| 1594 Node rhs, | 1594 Node rhs, |
| 1595 A arg) { | 1595 A arg) { |
| 1596 return bulkHandleSet(node); | 1596 return bulkHandleSet(node, arg); |
| 1597 } | 1597 } |
| 1598 | 1598 |
| 1599 @override | 1599 @override |
| 1600 R visitTopLevelSetterSet( | 1600 R visitTopLevelSetterSet( |
| 1601 SendSet node, | 1601 SendSet node, |
| 1602 FunctionElement setter, | 1602 FunctionElement setter, |
| 1603 Node rhs, | 1603 Node rhs, |
| 1604 A arg) { | 1604 A arg) { |
| 1605 return bulkHandleSet(node); | 1605 return bulkHandleSet(node, arg); |
| 1606 } | 1606 } |
| 1607 } | 1607 } |
| 1608 | 1608 |
| 1609 /// Mixin that implements all `visitXIndexSet` methods of [SemanticSendVisitor] | 1609 /// Mixin that implements all `visitXIndexSet` methods of [SemanticSendVisitor] |
| 1610 /// by delegating to a bulk handler. | 1610 /// by delegating to a bulk handler. |
| 1611 /// | 1611 /// |
| 1612 /// Use this mixin to provide a trivial implementation for all `visitXIndexSet` | 1612 /// Use this mixin to provide a trivial implementation for all `visitXIndexSet` |
| 1613 /// methods. | 1613 /// methods. |
| 1614 abstract class IndexSetBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1614 abstract class IndexSetBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1615 R bulkHandleNode(Node node, String message); | 1615 R bulkHandleNode(Node node, String message, A arg); |
| 1616 | 1616 |
| 1617 R bulkHandleIndexSet(Send node) { | 1617 R bulkHandleIndexSet(Send node, A arg) { |
| 1618 return bulkHandleNode(node, "Index set expression `$node` unhandled."); | 1618 return bulkHandleNode(node, "Index set expression `$node` unhandled.", arg); |
| 1619 } | 1619 } |
| 1620 | 1620 |
| 1621 @override | 1621 @override |
| 1622 R visitCompoundIndexSet( | 1622 R visitCompoundIndexSet( |
| 1623 SendSet node, | 1623 SendSet node, |
| 1624 Node receiver, | 1624 Node receiver, |
| 1625 Node index, | 1625 Node index, |
| 1626 AssignmentOperator operator, | 1626 AssignmentOperator operator, |
| 1627 Node rhs, | 1627 Node rhs, |
| 1628 A arg) { | 1628 A arg) { |
| 1629 return bulkHandleIndexSet(node); | 1629 return bulkHandleIndexSet(node, arg); |
| 1630 } | 1630 } |
| 1631 | 1631 |
| 1632 @override | 1632 @override |
| 1633 R visitIndexSet( | 1633 R visitIndexSet( |
| 1634 SendSet node, | 1634 SendSet node, |
| 1635 Node receiver, | 1635 Node receiver, |
| 1636 Node index, | 1636 Node index, |
| 1637 Node rhs, | 1637 Node rhs, |
| 1638 A arg) { | 1638 A arg) { |
| 1639 return bulkHandleIndexSet(node); | 1639 return bulkHandleIndexSet(node, arg); |
| 1640 } | 1640 } |
| 1641 | 1641 |
| 1642 @override | 1642 @override |
| 1643 R visitSuperCompoundIndexSet( | 1643 R visitSuperCompoundIndexSet( |
| 1644 SendSet node, | 1644 SendSet node, |
| 1645 FunctionElement getter, | 1645 FunctionElement getter, |
| 1646 FunctionElement setter, | 1646 FunctionElement setter, |
| 1647 Node index, | 1647 Node index, |
| 1648 AssignmentOperator operator, | 1648 AssignmentOperator operator, |
| 1649 Node rhs, | 1649 Node rhs, |
| 1650 A arg) { | 1650 A arg) { |
| 1651 return bulkHandleIndexSet(node); | 1651 return bulkHandleIndexSet(node, arg); |
| 1652 } | 1652 } |
| 1653 | 1653 |
| 1654 @override | 1654 @override |
| 1655 R visitSuperIndexSet( | 1655 R visitSuperIndexSet( |
| 1656 SendSet node, | 1656 SendSet node, |
| 1657 FunctionElement function, | 1657 FunctionElement function, |
| 1658 Node index, | 1658 Node index, |
| 1659 Node rhs, | 1659 Node rhs, |
| 1660 A arg) { | 1660 A arg) { |
| 1661 return bulkHandleIndexSet(node); | 1661 return bulkHandleIndexSet(node, arg); |
| 1662 } | 1662 } |
| 1663 } | 1663 } |
| 1664 | 1664 |
| 1665 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by | 1665 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by |
| 1666 /// delegating to a bulk handler. | 1666 /// delegating to a bulk handler. |
| 1667 /// | 1667 /// |
| 1668 /// Use this mixin to provide a trivial implementation for all binary visitor | 1668 /// Use this mixin to provide a trivial implementation for all binary visitor |
| 1669 /// methods. | 1669 /// methods. |
| 1670 abstract class BinaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1670 abstract class BinaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1671 R bulkHandleNode(Node node, String message); | 1671 R bulkHandleNode(Node node, String message, A arg); |
| 1672 | 1672 |
| 1673 R bulkHandleBinary(Send node) { | 1673 R bulkHandleBinary(Send node, A arg) { |
| 1674 return bulkHandleNode(node, "Binary expression `$node` unhandled."); | 1674 return bulkHandleNode(node, "Binary expression `$node` unhandled.", arg); |
| 1675 } | 1675 } |
| 1676 | 1676 |
| 1677 @override | 1677 @override |
| 1678 R visitBinary( | 1678 R visitBinary( |
| 1679 Send node, | 1679 Send node, |
| 1680 Node left, | 1680 Node left, |
| 1681 BinaryOperator operator, | 1681 BinaryOperator operator, |
| 1682 Node right, | 1682 Node right, |
| 1683 A arg) { | 1683 A arg) { |
| 1684 return bulkHandleBinary(node); | 1684 return bulkHandleBinary(node, arg); |
| 1685 } | 1685 } |
| 1686 | 1686 |
| 1687 @override | 1687 @override |
| 1688 R visitEquals( | 1688 R visitEquals( |
| 1689 Send node, | 1689 Send node, |
| 1690 Node left, | 1690 Node left, |
| 1691 Node right, | 1691 Node right, |
| 1692 A arg) { | 1692 A arg) { |
| 1693 return bulkHandleBinary(node); | 1693 return bulkHandleBinary(node, arg); |
| 1694 } | 1694 } |
| 1695 | 1695 |
| 1696 @override | 1696 @override |
| 1697 R visitNotEquals( | 1697 R visitNotEquals( |
| 1698 Send node, | 1698 Send node, |
| 1699 Node left, | 1699 Node left, |
| 1700 Node right, | 1700 Node right, |
| 1701 A arg) { | 1701 A arg) { |
| 1702 return bulkHandleBinary(node); | 1702 return bulkHandleBinary(node, arg); |
| 1703 } | 1703 } |
| 1704 | 1704 |
| 1705 @override | 1705 @override |
| 1706 R visitIndex( | 1706 R visitIndex( |
| 1707 Send node, | 1707 Send node, |
| 1708 Node receiver, | 1708 Node receiver, |
| 1709 Node index, | 1709 Node index, |
| 1710 A arg) { | 1710 A arg) { |
| 1711 return bulkHandleBinary(node); | 1711 return bulkHandleBinary(node, arg); |
| 1712 } | 1712 } |
| 1713 | 1713 |
| 1714 @override | 1714 @override |
| 1715 R visitSuperBinary( | 1715 R visitSuperBinary( |
| 1716 Send node, | 1716 Send node, |
| 1717 FunctionElement function, | 1717 FunctionElement function, |
| 1718 BinaryOperator operator, | 1718 BinaryOperator operator, |
| 1719 Node argument, | 1719 Node argument, |
| 1720 A arg) { | 1720 A arg) { |
| 1721 return bulkHandleBinary(node); | 1721 return bulkHandleBinary(node, arg); |
| 1722 } | 1722 } |
| 1723 | 1723 |
| 1724 @override | 1724 @override |
| 1725 R visitSuperEquals( | 1725 R visitSuperEquals( |
| 1726 Send node, | 1726 Send node, |
| 1727 FunctionElement function, | 1727 FunctionElement function, |
| 1728 Node argument, | 1728 Node argument, |
| 1729 A arg) { | 1729 A arg) { |
| 1730 return bulkHandleBinary(node); | 1730 return bulkHandleBinary(node, arg); |
| 1731 } | 1731 } |
| 1732 | 1732 |
| 1733 @override | 1733 @override |
| 1734 R visitSuperNotEquals( | 1734 R visitSuperNotEquals( |
| 1735 Send node, | 1735 Send node, |
| 1736 FunctionElement function, | 1736 FunctionElement function, |
| 1737 Node argument, | 1737 Node argument, |
| 1738 A arg) { | 1738 A arg) { |
| 1739 return bulkHandleBinary(node); | 1739 return bulkHandleBinary(node, arg); |
| 1740 } | 1740 } |
| 1741 | 1741 |
| 1742 @override | 1742 @override |
| 1743 R visitSuperIndex( | 1743 R visitSuperIndex( |
| 1744 Send node, | 1744 Send node, |
| 1745 FunctionElement function, | 1745 FunctionElement function, |
| 1746 Node index, | 1746 Node index, |
| 1747 A arg) { | 1747 A arg) { |
| 1748 return bulkHandleBinary(node); | 1748 return bulkHandleBinary(node, arg); |
| 1749 } | 1749 } |
| 1750 } | 1750 } |
| 1751 | 1751 |
| 1752 /// Mixin that implements all unary visitor methods in [SemanticSendVisitor] by | 1752 /// Mixin that implements all unary visitor methods in [SemanticSendVisitor] by |
| 1753 /// delegating to a bulk handler. | 1753 /// delegating to a bulk handler. |
| 1754 /// | 1754 /// |
| 1755 /// Use this mixin to provide a trivial implementation for all unary visitor | 1755 /// Use this mixin to provide a trivial implementation for all unary visitor |
| 1756 /// methods. | 1756 /// methods. |
| 1757 abstract class UnaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1757 abstract class UnaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1758 R bulkHandleNode(Node node, String message); | 1758 R bulkHandleNode(Node node, String message, A arg); |
| 1759 | 1759 |
| 1760 R bulkHandleUnary(Send node) { | 1760 R bulkHandleUnary(Send node, A arg) { |
| 1761 return bulkHandleNode(node, "Unary expression `$node` unhandled."); | 1761 return bulkHandleNode(node, "Unary expression `$node` unhandled.", arg); |
| 1762 } | 1762 } |
| 1763 | 1763 |
| 1764 @override | 1764 @override |
| 1765 R visitNot( | 1765 R visitNot( |
| 1766 Send node, | 1766 Send node, |
| 1767 Node expression, | 1767 Node expression, |
| 1768 A arg) { | 1768 A arg) { |
| 1769 return bulkHandleUnary(node); | 1769 return bulkHandleUnary(node, arg); |
| 1770 } | 1770 } |
| 1771 | 1771 |
| 1772 @override | 1772 @override |
| 1773 R visitSuperUnary(Send node, UnaryOperator operator, | 1773 R visitSuperUnary(Send node, UnaryOperator operator, |
| 1774 FunctionElement function, A arg) { | 1774 FunctionElement function, A arg) { |
| 1775 return bulkHandleUnary(node); | 1775 return bulkHandleUnary(node, arg); |
| 1776 } | 1776 } |
| 1777 | 1777 |
| 1778 @override | 1778 @override |
| 1779 R visitUnary( | 1779 R visitUnary( |
| 1780 Send node, | 1780 Send node, |
| 1781 UnaryOperator operator, | 1781 UnaryOperator operator, |
| 1782 Node expression, | 1782 Node expression, |
| 1783 A arg) { | 1783 A arg) { |
| 1784 return bulkHandleUnary(node); | 1784 return bulkHandleUnary(node, arg); |
| 1785 } | 1785 } |
| 1786 } | 1786 } |
| 1787 | 1787 |
| 1788 /// Mixin that implements all purely structural visitor methods in | 1788 /// Mixin that implements all purely structural visitor methods in |
| 1789 /// [SemanticSendVisitor] by delegating to a bulk handler. | 1789 /// [SemanticSendVisitor] by delegating to a bulk handler. |
| 1790 /// | 1790 /// |
| 1791 /// Use this mixin to provide a trivial implementation for all purely structural | 1791 /// Use this mixin to provide a trivial implementation for all purely structural |
| 1792 /// visitor methods. | 1792 /// visitor methods. |
| 1793 abstract class BaseBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1793 abstract class BaseBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1794 R bulkHandleNode(Node node, String message); | 1794 R bulkHandleNode(Node node, String message, A arg); |
| 1795 | 1795 |
| 1796 @override | 1796 @override |
| 1797 R visitAs( | 1797 R visitAs( |
| 1798 Send node, | 1798 Send node, |
| 1799 Node expression, | 1799 Node expression, |
| 1800 DartType type, | 1800 DartType type, |
| 1801 A arg) { | 1801 A arg) { |
| 1802 return bulkHandleNode(node, 'As cast `$node` unhandled.'); | 1802 return bulkHandleNode(node, 'As cast `$node` unhandled.', arg); |
| 1803 } | 1803 } |
| 1804 | 1804 |
| 1805 @override | 1805 @override |
| 1806 R visitAssert( | 1806 R visitAssert( |
| 1807 Send node, | 1807 Send node, |
| 1808 Node expression, | 1808 Node expression, |
| 1809 A arg) { | 1809 A arg) { |
| 1810 return bulkHandleNode(node, 'Assert `$node` unhandled.'); | 1810 return bulkHandleNode(node, 'Assert `$node` unhandled.', arg); |
| 1811 } | 1811 } |
| 1812 | 1812 |
| 1813 @override | 1813 @override |
| 1814 R visitIs( | 1814 R visitIs( |
| 1815 Send node, | 1815 Send node, |
| 1816 Node expression, | 1816 Node expression, |
| 1817 DartType type, | 1817 DartType type, |
| 1818 A arg) { | 1818 A arg) { |
| 1819 return bulkHandleNode(node, 'Is test `$node` unhandled.'); | 1819 return bulkHandleNode(node, 'Is test `$node` unhandled.', arg); |
| 1820 } | 1820 } |
| 1821 | 1821 |
| 1822 @override | 1822 @override |
| 1823 R visitIsNot( | 1823 R visitIsNot( |
| 1824 Send node, | 1824 Send node, |
| 1825 Node expression, | 1825 Node expression, |
| 1826 DartType type, | 1826 DartType type, |
| 1827 A arg) { | 1827 A arg) { |
| 1828 return bulkHandleNode(node, 'Is not test `$node` unhandled.'); | 1828 return bulkHandleNode(node, 'Is not test `$node` unhandled.', arg); |
| 1829 } | 1829 } |
| 1830 | 1830 |
| 1831 @override | 1831 @override |
| 1832 R visitLogicalAnd( | 1832 R visitLogicalAnd( |
| 1833 Send node, | 1833 Send node, |
| 1834 Node left, | 1834 Node left, |
| 1835 Node right, | 1835 Node right, |
| 1836 A arg) { | 1836 A arg) { |
| 1837 return bulkHandleNode(node, 'Lazy and `$node` unhandled.'); | 1837 return bulkHandleNode(node, 'Lazy and `$node` unhandled.', arg); |
| 1838 } | 1838 } |
| 1839 | 1839 |
| 1840 @override | 1840 @override |
| 1841 R visitLogicalOr( | 1841 R visitLogicalOr( |
| 1842 Send node, | 1842 Send node, |
| 1843 Node left, | 1843 Node left, |
| 1844 Node right, | 1844 Node right, |
| 1845 A arg) { | 1845 A arg) { |
| 1846 return bulkHandleNode(node, 'Lazy or `$node` unhandled.'); | 1846 return bulkHandleNode(node, 'Lazy or `$node` unhandled.', arg); |
| 1847 } | 1847 } |
| 1848 } | 1848 } |
| 1849 | 1849 |
| 1850 /// Mixin that implements all visitor methods for `super` calls in | 1850 /// Mixin that implements all visitor methods for `super` calls in |
| 1851 /// [SemanticSendVisitor] by delegating to a bulk handler. | 1851 /// [SemanticSendVisitor] by delegating to a bulk handler. |
| 1852 /// | 1852 /// |
| 1853 /// Use this mixin to provide a trivial implementation for `super` calls | 1853 /// Use this mixin to provide a trivial implementation for `super` calls |
| 1854 /// visitor methods. | 1854 /// visitor methods. |
| 1855 abstract class SuperBulkMixin<R, A> implements SemanticSendVisitor<R, A> { | 1855 abstract class SuperBulkMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 1856 R bulkHandleNode(Node node, String message); | 1856 R bulkHandleNode(Node node, String message, A arg); |
| 1857 | 1857 |
| 1858 R bulkHandleSuper(Send node) { | 1858 R bulkHandleSuper(Send node, A arg) { |
| 1859 return bulkHandleNode(node, "Super call `$node` unhandled."); | 1859 return bulkHandleNode(node, "Super call `$node` unhandled.", arg); |
| 1860 } | 1860 } |
| 1861 | 1861 |
| 1862 @override | 1862 @override |
| 1863 R visitSuperBinary( | 1863 R visitSuperBinary( |
| 1864 Send node, | 1864 Send node, |
| 1865 FunctionElement function, | 1865 FunctionElement function, |
| 1866 BinaryOperator operator, | 1866 BinaryOperator operator, |
| 1867 Node argument, | 1867 Node argument, |
| 1868 A arg) { | 1868 A arg) { |
| 1869 return bulkHandleSuper(node); | 1869 return bulkHandleSuper(node, arg); |
| 1870 } | 1870 } |
| 1871 | 1871 |
| 1872 @override | 1872 @override |
| 1873 R visitSuperCompoundIndexSet( | 1873 R visitSuperCompoundIndexSet( |
| 1874 SendSet node, | 1874 SendSet node, |
| 1875 FunctionElement getter, | 1875 FunctionElement getter, |
| 1876 FunctionElement setter, | 1876 FunctionElement setter, |
| 1877 Node index, | 1877 Node index, |
| 1878 AssignmentOperator operator, | 1878 AssignmentOperator operator, |
| 1879 Node rhs, | 1879 Node rhs, |
| 1880 A arg) { | 1880 A arg) { |
| 1881 return bulkHandleSuper(node); | 1881 return bulkHandleSuper(node, arg); |
| 1882 } | 1882 } |
| 1883 | 1883 |
| 1884 @override | 1884 @override |
| 1885 R visitSuperEquals( | 1885 R visitSuperEquals( |
| 1886 Send node, | 1886 Send node, |
| 1887 FunctionElement function, | 1887 FunctionElement function, |
| 1888 Node argument, | 1888 Node argument, |
| 1889 A arg) { | 1889 A arg) { |
| 1890 return bulkHandleSuper(node); | 1890 return bulkHandleSuper(node, arg); |
| 1891 } | 1891 } |
| 1892 | 1892 |
| 1893 @override | 1893 @override |
| 1894 R visitSuperFieldCompound( | 1894 R visitSuperFieldCompound( |
| 1895 Send node, | 1895 Send node, |
| 1896 FieldElement field, | 1896 FieldElement field, |
| 1897 AssignmentOperator operator, | 1897 AssignmentOperator operator, |
| 1898 Node rhs, | 1898 Node rhs, |
| 1899 A arg) { | 1899 A arg) { |
| 1900 return bulkHandleSuper(node); | 1900 return bulkHandleSuper(node, arg); |
| 1901 } | 1901 } |
| 1902 | 1902 |
| 1903 @override | 1903 @override |
| 1904 R visitSuperFieldFieldPostfix( | 1904 R visitSuperFieldFieldPostfix( |
| 1905 Send node, | 1905 Send node, |
| 1906 FieldElement readField, | 1906 FieldElement readField, |
| 1907 FieldElement writtenField, | 1907 FieldElement writtenField, |
| 1908 IncDecOperator operator, | 1908 IncDecOperator operator, |
| 1909 A arg) { | 1909 A arg) { |
| 1910 return bulkHandleSuper(node); | 1910 return bulkHandleSuper(node, arg); |
| 1911 } | 1911 } |
| 1912 | 1912 |
| 1913 @override | 1913 @override |
| 1914 R visitSuperFieldFieldPrefix( | 1914 R visitSuperFieldFieldPrefix( |
| 1915 Send node, | 1915 Send node, |
| 1916 FieldElement readField, | 1916 FieldElement readField, |
| 1917 FieldElement writtenField, | 1917 FieldElement writtenField, |
| 1918 IncDecOperator operator, | 1918 IncDecOperator operator, |
| 1919 A arg) { | 1919 A arg) { |
| 1920 return bulkHandleSuper(node); | 1920 return bulkHandleSuper(node, arg); |
| 1921 } | 1921 } |
| 1922 | 1922 |
| 1923 @override | 1923 @override |
| 1924 R visitSuperFieldGet( | 1924 R visitSuperFieldGet( |
| 1925 Send node, | 1925 Send node, |
| 1926 FieldElement field, | 1926 FieldElement field, |
| 1927 A arg) { | 1927 A arg) { |
| 1928 return bulkHandleSuper(node); | 1928 return bulkHandleSuper(node, arg); |
| 1929 } | 1929 } |
| 1930 | 1930 |
| 1931 @override | 1931 @override |
| 1932 R visitSuperFieldInvoke( | 1932 R visitSuperFieldInvoke( |
| 1933 Send node, | 1933 Send node, |
| 1934 FieldElement field, | 1934 FieldElement field, |
| 1935 NodeList arguments, | 1935 NodeList arguments, |
| 1936 Selector selector, | 1936 Selector selector, |
| 1937 A arg) { | 1937 A arg) { |
| 1938 return bulkHandleSuper(node); | 1938 return bulkHandleSuper(node, arg); |
| 1939 } | 1939 } |
| 1940 | 1940 |
| 1941 @override | 1941 @override |
| 1942 R visitSuperFieldPostfix( | 1942 R visitSuperFieldPostfix( |
| 1943 Send node, | 1943 Send node, |
| 1944 FieldElement field, | 1944 FieldElement field, |
| 1945 IncDecOperator operator, | 1945 IncDecOperator operator, |
| 1946 A arg) { | 1946 A arg) { |
| 1947 return bulkHandleSuper(node); | 1947 return bulkHandleSuper(node, arg); |
| 1948 } | 1948 } |
| 1949 | 1949 |
| 1950 @override | 1950 @override |
| 1951 R visitSuperFieldPrefix( | 1951 R visitSuperFieldPrefix( |
| 1952 Send node, | 1952 Send node, |
| 1953 FieldElement field, | 1953 FieldElement field, |
| 1954 IncDecOperator operator, | 1954 IncDecOperator operator, |
| 1955 A arg) { | 1955 A arg) { |
| 1956 return bulkHandleSuper(node); | 1956 return bulkHandleSuper(node, arg); |
| 1957 } | 1957 } |
| 1958 | 1958 |
| 1959 @override | 1959 @override |
| 1960 R visitSuperFieldSet( | 1960 R visitSuperFieldSet( |
| 1961 SendSet node, | 1961 SendSet node, |
| 1962 FieldElement field, | 1962 FieldElement field, |
| 1963 Node rhs, | 1963 Node rhs, |
| 1964 A arg) { | 1964 A arg) { |
| 1965 return bulkHandleSuper(node); | 1965 return bulkHandleSuper(node, arg); |
| 1966 } | 1966 } |
| 1967 | 1967 |
| 1968 @override | 1968 @override |
| 1969 R visitSuperFieldSetterCompound( | 1969 R visitSuperFieldSetterCompound( |
| 1970 Send node, | 1970 Send node, |
| 1971 FieldElement field, | 1971 FieldElement field, |
| 1972 FunctionElement setter, | 1972 FunctionElement setter, |
| 1973 AssignmentOperator operator, | 1973 AssignmentOperator operator, |
| 1974 Node rhs, | 1974 Node rhs, |
| 1975 A arg) { | 1975 A arg) { |
| 1976 return bulkHandleSuper(node); | 1976 return bulkHandleSuper(node, arg); |
| 1977 } | 1977 } |
| 1978 | 1978 |
| 1979 @override | 1979 @override |
| 1980 R visitSuperFieldSetterPostfix( | 1980 R visitSuperFieldSetterPostfix( |
| 1981 Send node, | 1981 Send node, |
| 1982 FieldElement field, | 1982 FieldElement field, |
| 1983 FunctionElement setter, | 1983 FunctionElement setter, |
| 1984 IncDecOperator operator, | 1984 IncDecOperator operator, |
| 1985 A arg) { | 1985 A arg) { |
| 1986 return bulkHandleSuper(node); | 1986 return bulkHandleSuper(node, arg); |
| 1987 } | 1987 } |
| 1988 | 1988 |
| 1989 @override | 1989 @override |
| 1990 R visitSuperFieldSetterPrefix( | 1990 R visitSuperFieldSetterPrefix( |
| 1991 Send node, | 1991 Send node, |
| 1992 FieldElement field, | 1992 FieldElement field, |
| 1993 FunctionElement setter, | 1993 FunctionElement setter, |
| 1994 IncDecOperator operator, | 1994 IncDecOperator operator, |
| 1995 A arg) { | 1995 A arg) { |
| 1996 return bulkHandleSuper(node); | 1996 return bulkHandleSuper(node, arg); |
| 1997 } | 1997 } |
| 1998 | 1998 |
| 1999 @override | 1999 @override |
| 2000 R visitSuperGetterFieldCompound( | 2000 R visitSuperGetterFieldCompound( |
| 2001 Send node, | 2001 Send node, |
| 2002 FunctionElement getter, | 2002 FunctionElement getter, |
| 2003 FieldElement field, | 2003 FieldElement field, |
| 2004 AssignmentOperator operator, | 2004 AssignmentOperator operator, |
| 2005 Node rhs, | 2005 Node rhs, |
| 2006 A arg) { | 2006 A arg) { |
| 2007 return bulkHandleSuper(node); | 2007 return bulkHandleSuper(node, arg); |
| 2008 } | 2008 } |
| 2009 | 2009 |
| 2010 @override | 2010 @override |
| 2011 R visitSuperGetterFieldPostfix( | 2011 R visitSuperGetterFieldPostfix( |
| 2012 Send node, | 2012 Send node, |
| 2013 FunctionElement getter, | 2013 FunctionElement getter, |
| 2014 FieldElement field, | 2014 FieldElement field, |
| 2015 IncDecOperator operator, | 2015 IncDecOperator operator, |
| 2016 A arg) { | 2016 A arg) { |
| 2017 return bulkHandleSuper(node); | 2017 return bulkHandleSuper(node, arg); |
| 2018 } | 2018 } |
| 2019 | 2019 |
| 2020 @override | 2020 @override |
| 2021 R visitSuperGetterFieldPrefix( | 2021 R visitSuperGetterFieldPrefix( |
| 2022 Send node, | 2022 Send node, |
| 2023 FunctionElement getter, | 2023 FunctionElement getter, |
| 2024 FieldElement field, | 2024 FieldElement field, |
| 2025 IncDecOperator operator, | 2025 IncDecOperator operator, |
| 2026 A arg) { | 2026 A arg) { |
| 2027 return bulkHandleSuper(node); | 2027 return bulkHandleSuper(node, arg); |
| 2028 } | 2028 } |
| 2029 | 2029 |
| 2030 @override | 2030 @override |
| 2031 R visitSuperGetterGet( | 2031 R visitSuperGetterGet( |
| 2032 Send node, | 2032 Send node, |
| 2033 FunctionElement getter, | 2033 FunctionElement getter, |
| 2034 A arg) { | 2034 A arg) { |
| 2035 return bulkHandleSuper(node); | 2035 return bulkHandleSuper(node, arg); |
| 2036 } | 2036 } |
| 2037 | 2037 |
| 2038 @override | 2038 @override |
| 2039 R visitSuperGetterInvoke( | 2039 R visitSuperGetterInvoke( |
| 2040 Send node, | 2040 Send node, |
| 2041 FunctionElement getter, | 2041 FunctionElement getter, |
| 2042 NodeList arguments, | 2042 NodeList arguments, |
| 2043 Selector selector, | 2043 Selector selector, |
| 2044 A arg) { | 2044 A arg) { |
| 2045 return bulkHandleSuper(node); | 2045 return bulkHandleSuper(node, arg); |
| 2046 } | 2046 } |
| 2047 | 2047 |
| 2048 @override | 2048 @override |
| 2049 R visitSuperGetterSetterCompound( | 2049 R visitSuperGetterSetterCompound( |
| 2050 Send node, | 2050 Send node, |
| 2051 FunctionElement getter, | 2051 FunctionElement getter, |
| 2052 FunctionElement setter, | 2052 FunctionElement setter, |
| 2053 AssignmentOperator operator, | 2053 AssignmentOperator operator, |
| 2054 Node rhs, | 2054 Node rhs, |
| 2055 A arg) { | 2055 A arg) { |
| 2056 return bulkHandleSuper(node); | 2056 return bulkHandleSuper(node, arg); |
| 2057 } | 2057 } |
| 2058 | 2058 |
| 2059 @override | 2059 @override |
| 2060 R visitSuperGetterSetterPostfix( | 2060 R visitSuperGetterSetterPostfix( |
| 2061 Send node, | 2061 Send node, |
| 2062 FunctionElement getter, | 2062 FunctionElement getter, |
| 2063 FunctionElement setter, | 2063 FunctionElement setter, |
| 2064 IncDecOperator operator, | 2064 IncDecOperator operator, |
| 2065 A arg) { | 2065 A arg) { |
| 2066 return bulkHandleSuper(node); | 2066 return bulkHandleSuper(node, arg); |
| 2067 } | 2067 } |
| 2068 | 2068 |
| 2069 @override | 2069 @override |
| 2070 R visitSuperGetterSetterPrefix( | 2070 R visitSuperGetterSetterPrefix( |
| 2071 Send node, | 2071 Send node, |
| 2072 FunctionElement getter, | 2072 FunctionElement getter, |
| 2073 FunctionElement setter, | 2073 FunctionElement setter, |
| 2074 IncDecOperator operator, | 2074 IncDecOperator operator, |
| 2075 A arg) { | 2075 A arg) { |
| 2076 return bulkHandleSuper(node); | 2076 return bulkHandleSuper(node, arg); |
| 2077 } | 2077 } |
| 2078 | 2078 |
| 2079 @override | 2079 @override |
| 2080 R visitSuperIndexSet( | 2080 R visitSuperIndexSet( |
| 2081 SendSet node, | 2081 SendSet node, |
| 2082 FunctionElement function, | 2082 FunctionElement function, |
| 2083 Node index, | 2083 Node index, |
| 2084 Node rhs, | 2084 Node rhs, |
| 2085 A arg) { | 2085 A arg) { |
| 2086 return bulkHandleSuper(node); | 2086 return bulkHandleSuper(node, arg); |
| 2087 } | 2087 } |
| 2088 | 2088 |
| 2089 @override | 2089 @override |
| 2090 R visitSuperMethodGet( | 2090 R visitSuperMethodGet( |
| 2091 Send node, | 2091 Send node, |
| 2092 MethodElement method, | 2092 MethodElement method, |
| 2093 A arg) { | 2093 A arg) { |
| 2094 return bulkHandleSuper(node); | 2094 return bulkHandleSuper(node, arg); |
| 2095 } | 2095 } |
| 2096 | 2096 |
| 2097 @override | 2097 @override |
| 2098 R visitSuperMethodInvoke( | 2098 R visitSuperMethodInvoke( |
| 2099 Send node, | 2099 Send node, |
| 2100 MethodElement method, | 2100 MethodElement method, |
| 2101 NodeList arguments, | 2101 NodeList arguments, |
| 2102 Selector selector, | 2102 Selector selector, |
| 2103 A arg) { | 2103 A arg) { |
| 2104 return bulkHandleSuper(node); | 2104 return bulkHandleSuper(node, arg); |
| 2105 } | 2105 } |
| 2106 | 2106 |
| 2107 @override | 2107 @override |
| 2108 R visitSuperMethodSetterCompound( | 2108 R visitSuperMethodSetterCompound( |
| 2109 Send node, | 2109 Send node, |
| 2110 FunctionElement method, | 2110 FunctionElement method, |
| 2111 FunctionElement setter, | 2111 FunctionElement setter, |
| 2112 AssignmentOperator operator, | 2112 AssignmentOperator operator, |
| 2113 Node rhs, | 2113 Node rhs, |
| 2114 A arg) { | 2114 A arg) { |
| 2115 return bulkHandleSuper(node); | 2115 return bulkHandleSuper(node, arg); |
| 2116 } | 2116 } |
| 2117 | 2117 |
| 2118 @override | 2118 @override |
| 2119 R visitSuperMethodSetterPostfix( | 2119 R visitSuperMethodSetterPostfix( |
| 2120 Send node, | 2120 Send node, |
| 2121 FunctionElement method, | 2121 FunctionElement method, |
| 2122 FunctionElement setter, | 2122 FunctionElement setter, |
| 2123 IncDecOperator operator, | 2123 IncDecOperator operator, |
| 2124 A arg) { | 2124 A arg) { |
| 2125 return bulkHandleSuper(node); | 2125 return bulkHandleSuper(node, arg); |
| 2126 } | 2126 } |
| 2127 | 2127 |
| 2128 @override | 2128 @override |
| 2129 R visitSuperMethodSetterPrefix( | 2129 R visitSuperMethodSetterPrefix( |
| 2130 Send node, | 2130 Send node, |
| 2131 FunctionElement method, | 2131 FunctionElement method, |
| 2132 FunctionElement setter, | 2132 FunctionElement setter, |
| 2133 IncDecOperator operator, | 2133 IncDecOperator operator, |
| 2134 A arg) { | 2134 A arg) { |
| 2135 return bulkHandleSuper(node); | 2135 return bulkHandleSuper(node, arg); |
| 2136 } | 2136 } |
| 2137 | 2137 |
| 2138 @override | 2138 @override |
| 2139 R visitSuperNotEquals( | 2139 R visitSuperNotEquals( |
| 2140 Send node, | 2140 Send node, |
| 2141 FunctionElement function, | 2141 FunctionElement function, |
| 2142 Node argument, | 2142 Node argument, |
| 2143 A arg) { | 2143 A arg) { |
| 2144 return bulkHandleSuper(node); | 2144 return bulkHandleSuper(node, arg); |
| 2145 } | 2145 } |
| 2146 | 2146 |
| 2147 @override | 2147 @override |
| 2148 R visitSuperSetterSet( | 2148 R visitSuperSetterSet( |
| 2149 SendSet node, | 2149 SendSet node, |
| 2150 FunctionElement setter, | 2150 FunctionElement setter, |
| 2151 Node rhs, | 2151 Node rhs, |
| 2152 A arg) { | 2152 A arg) { |
| 2153 return bulkHandleSuper(node); | 2153 return bulkHandleSuper(node, arg); |
| 2154 } | 2154 } |
| 2155 | 2155 |
| 2156 @override | 2156 @override |
| 2157 R visitSuperUnary( | 2157 R visitSuperUnary( |
| 2158 Send node, | 2158 Send node, |
| 2159 UnaryOperator operator, | 2159 UnaryOperator operator, |
| 2160 FunctionElement function, | 2160 FunctionElement function, |
| 2161 A arg) { | 2161 A arg) { |
| 2162 return bulkHandleSuper(node); | 2162 return bulkHandleSuper(node, arg); |
| 2163 } | 2163 } |
| 2164 } | 2164 } |
| 2165 | 2165 |
| 2166 /// Visitor that implements [SemanticSendVisitor] by the use of `BulkX` mixins. | 2166 /// Visitor that implements [SemanticSendVisitor] by the use of `BulkX` mixins. |
| 2167 /// | 2167 /// |
| 2168 /// This class is useful in itself, but shows how to use the `BulkX` mixins and | 2168 /// This class is useful in itself, but shows how to use the `BulkX` mixins and |
| 2169 /// tests that the union of the `BulkX` mixins implement all `visit` and `error` | 2169 /// tests that the union of the `BulkX` mixins implement all `visit` and `error` |
| 2170 /// methods of [SemanticSendVisitor]. | 2170 /// methods of [SemanticSendVisitor]. |
| 2171 class BulkVisitor<R, A> extends SemanticSendVisitor<R, A> | 2171 class BulkVisitor<R, A> extends SemanticSendVisitor<R, A> |
| 2172 with GetBulkMixin<R, A>, | 2172 with GetBulkMixin<R, A>, |
| 2173 SetBulkMixin<R, A>, | 2173 SetBulkMixin<R, A>, |
| 2174 ErrorBulkMixin<R, A>, | 2174 ErrorBulkMixin<R, A>, |
| 2175 InvokeBulkMixin<R, A>, | 2175 InvokeBulkMixin<R, A>, |
| 2176 IndexSetBulkMixin<R, A>, | 2176 IndexSetBulkMixin<R, A>, |
| 2177 CompoundBulkMixin<R, A>, | 2177 CompoundBulkMixin<R, A>, |
| 2178 UnaryBulkMixin<R, A>, | 2178 UnaryBulkMixin<R, A>, |
| 2179 BaseBulkMixin<R, A>, | 2179 BaseBulkMixin<R, A>, |
| 2180 BinaryBulkMixin<R, A>, | 2180 BinaryBulkMixin<R, A>, |
| 2181 PrefixBulkMixin<R, A>, | 2181 PrefixBulkMixin<R, A>, |
| 2182 PostfixBulkMixin<R, A> { | 2182 PostfixBulkMixin<R, A> { |
| 2183 | |
| 2184 @override | 2183 @override |
| 2185 R apply(Node node, A arg) { | 2184 R apply(Node node, A arg) { |
| 2186 throw new UnimplementedError("BulkVisitor.apply unimplemented"); | 2185 throw new UnimplementedError("BulkVisitor.apply unimplemented"); |
| 2187 } | 2186 } |
| 2188 | 2187 |
| 2189 @override | 2188 @override |
| 2190 R bulkHandleNode(Node node, String message) { | 2189 R bulkHandleNode(Node node, String message, A arg) { |
| 2191 throw new UnimplementedError("BulkVisitor.bulkHandleNode unimplemented"); | 2190 throw new UnimplementedError("BulkVisitor.bulkHandleNode unimplemented"); |
| 2192 } | 2191 } |
| 2193 } | 2192 } |
| 2194 | 2193 |
| 2195 /// [SemanticSendVisitor] that visits subnodes. | 2194 /// [SemanticSendVisitor] that visits subnodes. |
| 2196 class TraversalMixin<R, A> implements SemanticSendVisitor<R, A> { | 2195 class TraversalMixin<R, A> implements SemanticSendVisitor<R, A> { |
| 2197 @override | 2196 @override |
| 2198 R apply(Node node, A arg) { | 2197 R apply(Node node, A arg) { |
| 2199 throw new UnimplementedError("TraversalMixin.apply unimplemented"); | 2198 throw new UnimplementedError("TraversalMixin.apply unimplemented"); |
| 2200 } | 2199 } |
| (...skipping 1768 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3969 return null; | 3968 return null; |
| 3970 } | 3969 } |
| 3971 | 3970 |
| 3972 @override | 3971 @override |
| 3973 R errorUnresolvedSuperIndexPostfix( | 3972 R errorUnresolvedSuperIndexPostfix( |
| 3974 Send node, | 3973 Send node, |
| 3975 Element function, | 3974 Element function, |
| 3976 Node index, | 3975 Node index, |
| 3977 IncDecOperator operator, | 3976 IncDecOperator operator, |
| 3978 A arg) { | 3977 A arg) { |
| 3979 // TODO: implement errorUnresolvedSuperIndexPostfix | 3978 apply(index, arg); |
| 3979 return null; |
| 3980 } | 3980 } |
| 3981 | 3981 |
| 3982 @override | 3982 @override |
| 3983 R errorUnresolvedSuperIndexPrefix( | 3983 R errorUnresolvedSuperIndexPrefix( |
| 3984 Send node, | 3984 Send node, |
| 3985 Element function, | 3985 Element function, |
| 3986 Node index, | 3986 Node index, |
| 3987 IncDecOperator operator, | 3987 IncDecOperator operator, |
| 3988 A arg) { | 3988 A arg) { |
| 3989 // TODO: implement errorUnresolvedSuperIndexPrefix | 3989 apply(index, arg); |
| 3990 return null; |
| 3990 } | 3991 } |
| 3991 | 3992 |
| 3992 @override | 3993 @override |
| 3993 R visitIndexPostfix( | 3994 R visitIndexPostfix( |
| 3994 Send node, | 3995 Send node, |
| 3995 Node receiver, | 3996 Node receiver, |
| 3996 Node index, | 3997 Node index, |
| 3997 IncDecOperator operator, | 3998 IncDecOperator operator, |
| 3998 A arg) { | 3999 A arg) { |
| 3999 // TODO: implement visitIndexPostfix | 4000 apply(receiver, arg); |
| 4001 apply(index, arg); |
| 4002 return null; |
| 4000 } | 4003 } |
| 4001 | 4004 |
| 4002 @override | 4005 @override |
| 4003 R visitIndexPrefix( | 4006 R visitIndexPrefix( |
| 4004 Send node, | 4007 Send node, |
| 4005 Node receiver, | 4008 Node receiver, |
| 4006 Node index, | 4009 Node index, |
| 4007 IncDecOperator operator, | 4010 IncDecOperator operator, |
| 4008 A arg) { | 4011 A arg) { |
| 4009 // TODO: implement visitIndexPrefix | 4012 apply(receiver, arg); |
| 4013 apply(index, arg); |
| 4014 return null; |
| 4010 } | 4015 } |
| 4011 | 4016 |
| 4012 @override | 4017 @override |
| 4013 R visitSuperIndexPostfix( | 4018 R visitSuperIndexPostfix( |
| 4014 Send node, | 4019 Send node, |
| 4015 FunctionElement indexFunction, | 4020 FunctionElement indexFunction, |
| 4016 FunctionElement indexSetFunction, | 4021 FunctionElement indexSetFunction, |
| 4017 Node index, | 4022 Node index, |
| 4018 IncDecOperator operator, | 4023 IncDecOperator operator, |
| 4019 A arg) { | 4024 A arg) { |
| 4020 // TODO: implement visitSuperIndexPostfix | 4025 apply(index, arg); |
| 4026 return null; |
| 4021 } | 4027 } |
| 4022 | 4028 |
| 4023 @override | 4029 @override |
| 4024 R visitSuperIndexPrefix( | 4030 R visitSuperIndexPrefix( |
| 4025 Send node, | 4031 Send node, |
| 4026 FunctionElement indexFunction, | 4032 FunctionElement indexFunction, |
| 4027 FunctionElement indexSetFunction, | 4033 FunctionElement indexSetFunction, |
| 4028 Node index, | 4034 Node index, |
| 4029 IncDecOperator operator, | 4035 IncDecOperator operator, |
| 4030 A arg) { | 4036 A arg) { |
| 4031 // TODO: implement visitSuperIndexPrefix | 4037 apply(index, arg); |
| 4038 return null; |
| 4032 } | 4039 } |
| 4033 } | 4040 } |
| 4034 | 4041 |
| 4035 /// AST visitor that visits all normal [Send] and [SendSet] nodes using the | 4042 /// AST visitor that visits all normal [Send] and [SendSet] nodes using the |
| 4036 /// [SemanticVisitor]. | 4043 /// [SemanticVisitor]. |
| 4037 class TraversalVisitor<R, A> extends SemanticVisitor<R, A> | 4044 class TraversalVisitor<R, A> extends SemanticVisitor<R, A> |
| 4038 with TraversalMixin<R, A> { | 4045 with TraversalMixin<R, A> { |
| 4039 TraversalVisitor(TreeElements elements) : super(elements); | 4046 TraversalVisitor(TreeElements elements) : super(elements); |
| 4040 | 4047 |
| 4041 SemanticSendVisitor<R, A> get sendVisitor => this; | 4048 SemanticSendVisitor<R, A> get sendVisitor => this; |
| (...skipping 1161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5203 FunctionElement indexFunction, | 5210 FunctionElement indexFunction, |
| 5204 FunctionElement indexSetFunction, | 5211 FunctionElement indexSetFunction, |
| 5205 Node index, | 5212 Node index, |
| 5206 IncDecOperator operator, | 5213 IncDecOperator operator, |
| 5207 A arg) { | 5214 A arg) { |
| 5208 return handleSuperIndexPostfixPrefix( | 5215 return handleSuperIndexPostfixPrefix( |
| 5209 node, indexFunction, indexSetFunction, | 5216 node, indexFunction, indexSetFunction, |
| 5210 index, operator, arg, isPrefix: true); | 5217 index, operator, arg, isPrefix: true); |
| 5211 } | 5218 } |
| 5212 } | 5219 } |
| OLD | NEW |