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

Side by Side Diff: pkg/kernel/lib/visitor.dart

Issue 2835453002: Parametrize over the additional agrument type for StatementVisitor1 and ExpressionVisitor1 (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW
« pkg/kernel/lib/interpreter/interpreter.dart ('K') | « pkg/kernel/lib/interpreter/interpreter.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698