OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 library kernel.ast.visitor; | 4 library kernel.ast.visitor; |
5 | 5 |
6 import 'ast.dart'; | 6 import 'ast.dart'; |
7 | 7 |
8 abstract class ExpressionVisitor<R> { | 8 abstract class ExpressionVisitor<R> { |
9 R defaultExpression(Expression node) => null; | 9 R defaultExpression(Expression node) => null; |
10 R defaultBasicLiteral(BasicLiteral node) => defaultExpression(node); | 10 R defaultBasicLiteral(BasicLiteral node) => defaultExpression(node); |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 DartType visitDartType(DartType node) => node; | 321 DartType visitDartType(DartType node) => node; |
322 | 322 |
323 Supertype visitSupertype(Supertype node) => node; | 323 Supertype visitSupertype(Supertype node) => node; |
324 | 324 |
325 TreeNode defaultTreeNode(TreeNode node) { | 325 TreeNode defaultTreeNode(TreeNode node) { |
326 node.transformChildren(this); | 326 node.transformChildren(this); |
327 return node; | 327 return node; |
328 } | 328 } |
329 } | 329 } |
330 | 330 |
331 abstract class ExpressionVisitor1<R> { | 331 abstract class ExpressionVisitor1<R, T> { |
332 R defaultExpression(Expression node, arg) => null; | 332 R defaultExpression(Expression node, T arg) => null; |
333 R defaultBasicLiteral(BasicLiteral node, arg) => defaultExpression(node, arg); | 333 R defaultBasicLiteral(BasicLiteral node, T arg) => |
334 R visitInvalidExpression(InvalidExpression node, arg) => | |
335 defaultExpression(node, arg); | 334 defaultExpression(node, arg); |
336 R visitVariableGet(VariableGet node, arg) => defaultExpression(node, arg); | 335 R visitInvalidExpression(InvalidExpression node, T arg) => |
337 R visitVariableSet(VariableSet node, arg) => defaultExpression(node, arg); | |
338 R visitPropertyGet(PropertyGet node, arg) => defaultExpression(node, arg); | |
339 R visitPropertySet(PropertySet node, arg) => defaultExpression(node, arg); | |
340 R visitDirectPropertyGet(DirectPropertyGet node, arg) => | |
341 defaultExpression(node, arg); | 336 defaultExpression(node, arg); |
342 R visitDirectPropertySet(DirectPropertySet node, arg) => | 337 R visitVariableGet(VariableGet node, T arg) => defaultExpression(node, arg); |
| 338 R visitVariableSet(VariableSet node, T arg) => defaultExpression(node, arg); |
| 339 R visitPropertyGet(PropertyGet node, T arg) => defaultExpression(node, arg); |
| 340 R visitPropertySet(PropertySet node, T arg) => defaultExpression(node, arg); |
| 341 R visitDirectPropertyGet(DirectPropertyGet node, T arg) => |
343 defaultExpression(node, arg); | 342 defaultExpression(node, arg); |
344 R visitSuperPropertyGet(SuperPropertyGet node, arg) => | 343 R visitDirectPropertySet(DirectPropertySet node, T arg) => |
345 defaultExpression(node, arg); | 344 defaultExpression(node, arg); |
346 R visitSuperPropertySet(SuperPropertySet node, arg) => | 345 R visitSuperPropertyGet(SuperPropertyGet node, T arg) => |
347 defaultExpression(node, arg); | 346 defaultExpression(node, arg); |
348 R visitStaticGet(StaticGet node, arg) => defaultExpression(node, arg); | 347 R visitSuperPropertySet(SuperPropertySet node, T arg) => |
349 R visitStaticSet(StaticSet node, arg) => defaultExpression(node, arg); | |
350 R visitMethodInvocation(MethodInvocation node, arg) => | |
351 defaultExpression(node, arg); | 348 defaultExpression(node, arg); |
352 R visitDirectMethodInvocation(DirectMethodInvocation node, arg) => | 349 R visitStaticGet(StaticGet node, T arg) => defaultExpression(node, arg); |
| 350 R visitStaticSet(StaticSet node, T arg) => defaultExpression(node, arg); |
| 351 R visitMethodInvocation(MethodInvocation node, T arg) => |
353 defaultExpression(node, arg); | 352 defaultExpression(node, arg); |
354 R visitSuperMethodInvocation(SuperMethodInvocation node, arg) => | 353 R visitDirectMethodInvocation(DirectMethodInvocation node, T arg) => |
355 defaultExpression(node, arg); | 354 defaultExpression(node, arg); |
356 R visitStaticInvocation(StaticInvocation node, arg) => | 355 R visitSuperMethodInvocation(SuperMethodInvocation node, T arg) => |
357 defaultExpression(node, arg); | 356 defaultExpression(node, arg); |
358 R visitConstructorInvocation(ConstructorInvocation node, arg) => | 357 R visitStaticInvocation(StaticInvocation node, T arg) => |
359 defaultExpression(node, arg); | 358 defaultExpression(node, arg); |
360 R visitNot(Not node, arg) => defaultExpression(node, arg); | 359 R visitConstructorInvocation(ConstructorInvocation node, T arg) => |
361 R visitLogicalExpression(LogicalExpression node, arg) => | |
362 defaultExpression(node, arg); | 360 defaultExpression(node, arg); |
363 R visitConditionalExpression(ConditionalExpression node, arg) => | 361 R visitNot(Not node, T arg) => defaultExpression(node, arg); |
| 362 R visitLogicalExpression(LogicalExpression node, T arg) => |
364 defaultExpression(node, arg); | 363 defaultExpression(node, arg); |
365 R visitStringConcatenation(StringConcatenation node, arg) => | 364 R visitConditionalExpression(ConditionalExpression node, T arg) => |
366 defaultExpression(node, arg); | 365 defaultExpression(node, arg); |
367 R visitIsExpression(IsExpression node, arg) => defaultExpression(node, arg); | 366 R visitStringConcatenation(StringConcatenation node, T arg) => |
368 R visitAsExpression(AsExpression node, arg) => defaultExpression(node, arg); | |
369 R visitSymbolLiteral(SymbolLiteral node, arg) => defaultExpression(node, arg); | |
370 R visitTypeLiteral(TypeLiteral node, arg) => defaultExpression(node, arg); | |
371 R visitThisExpression(ThisExpression node, arg) => | |
372 defaultExpression(node, arg); | 367 defaultExpression(node, arg); |
373 R visitRethrow(Rethrow node, arg) => defaultExpression(node, arg); | 368 R visitIsExpression(IsExpression node, T arg) => defaultExpression(node, arg); |
374 R visitThrow(Throw node, arg) => defaultExpression(node, arg); | 369 R visitAsExpression(AsExpression node, T arg) => defaultExpression(node, arg); |
375 R visitListLiteral(ListLiteral node, arg) => defaultExpression(node, arg); | 370 R visitSymbolLiteral(SymbolLiteral node, T arg) => |
376 R visitMapLiteral(MapLiteral node, arg) => defaultExpression(node, arg); | |
377 R visitAwaitExpression(AwaitExpression node, arg) => | |
378 defaultExpression(node, arg); | 371 defaultExpression(node, arg); |
379 R visitFunctionExpression(FunctionExpression node, arg) => | 372 R visitTypeLiteral(TypeLiteral node, T arg) => defaultExpression(node, arg); |
| 373 R visitThisExpression(ThisExpression node, T arg) => |
380 defaultExpression(node, arg); | 374 defaultExpression(node, arg); |
381 R visitStringLiteral(StringLiteral node, arg) => | 375 R visitRethrow(Rethrow node, T arg) => defaultExpression(node, arg); |
| 376 R visitThrow(Throw node, T arg) => defaultExpression(node, arg); |
| 377 R visitListLiteral(ListLiteral node, T arg) => defaultExpression(node, arg); |
| 378 R visitMapLiteral(MapLiteral node, T arg) => defaultExpression(node, arg); |
| 379 R visitAwaitExpression(AwaitExpression node, T arg) => |
| 380 defaultExpression(node, arg); |
| 381 R visitFunctionExpression(FunctionExpression node, T arg) => |
| 382 defaultExpression(node, arg); |
| 383 R visitStringLiteral(StringLiteral node, T arg) => |
382 defaultBasicLiteral(node, arg); | 384 defaultBasicLiteral(node, arg); |
383 R visitIntLiteral(IntLiteral node, arg) => defaultBasicLiteral(node, arg); | 385 R visitIntLiteral(IntLiteral node, T arg) => defaultBasicLiteral(node, arg); |
384 R visitDoubleLiteral(DoubleLiteral node, arg) => | 386 R visitDoubleLiteral(DoubleLiteral node, T arg) => |
385 defaultBasicLiteral(node, arg); | 387 defaultBasicLiteral(node, arg); |
386 R visitBoolLiteral(BoolLiteral node, arg) => defaultBasicLiteral(node, arg); | 388 R visitBoolLiteral(BoolLiteral node, T arg) => defaultBasicLiteral(node, arg); |
387 R visitNullLiteral(NullLiteral node, arg) => defaultBasicLiteral(node, arg); | 389 R visitNullLiteral(NullLiteral node, T arg) => defaultBasicLiteral(node, arg); |
388 R visitLet(Let node, arg) => defaultExpression(node, arg); | 390 R visitLet(Let node, T arg) => defaultExpression(node, arg); |
389 R visitLoadLibrary(LoadLibrary node, arg) => defaultExpression(node, arg); | 391 R visitLoadLibrary(LoadLibrary node, T arg) => defaultExpression(node, arg); |
390 R visitCheckLibraryIsLoaded(CheckLibraryIsLoaded node, arg) => | 392 R visitCheckLibraryIsLoaded(CheckLibraryIsLoaded node, T arg) => |
391 defaultExpression(node, arg); | 393 defaultExpression(node, arg); |
392 R visitVectorCreation(VectorCreation node, arg) => | 394 R visitVectorCreation(VectorCreation node, T arg) => |
393 defaultExpression(node, arg); | 395 defaultExpression(node, arg); |
394 R visitVectorGet(VectorGet node, arg) => defaultExpression(node, arg); | 396 R visitVectorGet(VectorGet node, T arg) => defaultExpression(node, arg); |
395 R visitVectorSet(VectorSet node, arg) => defaultExpression(node, arg); | 397 R visitVectorSet(VectorSet node, T arg) => defaultExpression(node, arg); |
396 R visitVectorCopy(VectorCopy node, arg) => defaultExpression(node, arg); | 398 R visitVectorCopy(VectorCopy node, T arg) => defaultExpression(node, arg); |
397 R visitClosureCreation(ClosureCreation node, arg) => | 399 R visitClosureCreation(ClosureCreation node, T arg) => |
398 defaultExpression(node, arg); | 400 defaultExpression(node, arg); |
399 } | 401 } |
400 | 402 |
401 abstract class StatementVisitor1<R> { | 403 abstract class StatementVisitor1<R, T> { |
402 R defaultStatement(Statement node, arg) => null; | 404 R defaultStatement(Statement node, T arg) => null; |
403 | 405 |
404 R visitInvalidStatement(InvalidStatement node, arg) => | 406 R visitInvalidStatement(InvalidStatement node, T arg) => |
405 defaultStatement(node, arg); | 407 defaultStatement(node, arg); |
406 R visitExpressionStatement(ExpressionStatement node, arg) => | 408 R visitExpressionStatement(ExpressionStatement node, T arg) => |
407 defaultStatement(node, arg); | 409 defaultStatement(node, arg); |
408 R visitBlock(Block node, arg) => defaultStatement(node, arg); | 410 R visitBlock(Block node, T arg) => defaultStatement(node, arg); |
409 R visitEmptyStatement(EmptyStatement node, arg) => | 411 R visitEmptyStatement(EmptyStatement node, T arg) => |
410 defaultStatement(node, arg); | 412 defaultStatement(node, arg); |
411 R visitAssertStatement(AssertStatement node, arg) => | 413 R visitAssertStatement(AssertStatement node, T arg) => |
412 defaultStatement(node, arg); | 414 defaultStatement(node, arg); |
413 R visitLabeledStatement(LabeledStatement node, arg) => | 415 R visitLabeledStatement(LabeledStatement node, T arg) => |
414 defaultStatement(node, arg); | 416 defaultStatement(node, arg); |
415 R visitBreakStatement(BreakStatement node, arg) => | 417 R visitBreakStatement(BreakStatement node, T arg) => |
416 defaultStatement(node, arg); | 418 defaultStatement(node, arg); |
417 R visitWhileStatement(WhileStatement node, arg) => | 419 R visitWhileStatement(WhileStatement node, T arg) => |
418 defaultStatement(node, arg); | 420 defaultStatement(node, arg); |
419 R visitDoStatement(DoStatement node, arg) => defaultStatement(node, arg); | 421 R visitDoStatement(DoStatement node, T arg) => defaultStatement(node, arg); |
420 R visitForStatement(ForStatement node, arg) => defaultStatement(node, arg); | 422 R visitForStatement(ForStatement node, T arg) => defaultStatement(node, arg); |
421 R visitForInStatement(ForInStatement node, arg) => | 423 R visitForInStatement(ForInStatement node, T arg) => |
422 defaultStatement(node, arg); | 424 defaultStatement(node, arg); |
423 R visitSwitchStatement(SwitchStatement node, arg) => | 425 R visitSwitchStatement(SwitchStatement node, T arg) => |
424 defaultStatement(node, arg); | 426 defaultStatement(node, arg); |
425 R visitContinueSwitchStatement(ContinueSwitchStatement node, arg) => | 427 R visitContinueSwitchStatement(ContinueSwitchStatement node, T arg) => |
426 defaultStatement(node, arg); | 428 defaultStatement(node, arg); |
427 R visitIfStatement(IfStatement node, arg) => defaultStatement(node, arg); | 429 R visitIfStatement(IfStatement node, T arg) => defaultStatement(node, arg); |
428 R visitReturnStatement(ReturnStatement node, arg) => | 430 R visitReturnStatement(ReturnStatement node, T arg) => |
429 defaultStatement(node, arg); | 431 defaultStatement(node, arg); |
430 R visitTryCatch(TryCatch node, arg) => defaultStatement(node, arg); | 432 R visitTryCatch(TryCatch node, T arg) => defaultStatement(node, arg); |
431 R visitTryFinally(TryFinally node, arg) => defaultStatement(node, arg); | 433 R visitTryFinally(TryFinally node, T arg) => defaultStatement(node, arg); |
432 R visitYieldStatement(YieldStatement node, arg) => | 434 R visitYieldStatement(YieldStatement node, T arg) => |
433 defaultStatement(node, arg); | 435 defaultStatement(node, arg); |
434 R visitVariableDeclaration(VariableDeclaration node, arg) => | 436 R visitVariableDeclaration(VariableDeclaration node, T arg) => |
435 defaultStatement(node, arg); | 437 defaultStatement(node, arg); |
436 R visitFunctionDeclaration(FunctionDeclaration node, arg) => | 438 R visitFunctionDeclaration(FunctionDeclaration node, T arg) => |
437 defaultStatement(node, arg); | 439 defaultStatement(node, arg); |
438 } | 440 } |
OLD | NEW |