1/* 2 * Copyright (C) 2007-2010 Júlio Vilmar Gesser. 3 * Copyright (C) 2011, 2013-2015 The JavaParser Team. 4 * 5 * This file is part of JavaParser. 6 * 7 * JavaParser can be used either under the terms of 8 * a) the GNU Lesser General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * b) the terms of the Apache License 12 * 13 * You should have received a copy of both licenses in LICENCE.LGPL and 14 * LICENCE.APACHE. Please refer to those files for details. 15 * 16 * JavaParser is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU Lesser General Public License for more details. 20 */ 21 22package com.github.javaparser.ast.visitor; 23 24import com.github.javaparser.ast.comments.BlockComment; 25import com.github.javaparser.ast.comments.Comment; 26import com.github.javaparser.ast.CompilationUnit; 27import com.github.javaparser.ast.ImportDeclaration; 28import com.github.javaparser.ast.comments.LineComment; 29import com.github.javaparser.ast.PackageDeclaration; 30import com.github.javaparser.ast.TypeParameter; 31import com.github.javaparser.ast.body.AnnotationDeclaration; 32import com.github.javaparser.ast.body.AnnotationMemberDeclaration; 33import com.github.javaparser.ast.body.BodyDeclaration; 34import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; 35import com.github.javaparser.ast.body.ConstructorDeclaration; 36import com.github.javaparser.ast.body.EmptyMemberDeclaration; 37import com.github.javaparser.ast.body.EmptyTypeDeclaration; 38import com.github.javaparser.ast.body.EnumConstantDeclaration; 39import com.github.javaparser.ast.body.EnumDeclaration; 40import com.github.javaparser.ast.body.FieldDeclaration; 41import com.github.javaparser.ast.body.InitializerDeclaration; 42import com.github.javaparser.ast.comments.JavadocComment; 43import com.github.javaparser.ast.body.MethodDeclaration; 44import com.github.javaparser.ast.body.MultiTypeParameter; 45import com.github.javaparser.ast.body.Parameter; 46import com.github.javaparser.ast.body.TypeDeclaration; 47import com.github.javaparser.ast.body.VariableDeclarator; 48import com.github.javaparser.ast.body.VariableDeclaratorId; 49import com.github.javaparser.ast.expr.*; 50import com.github.javaparser.ast.stmt.AssertStmt; 51import com.github.javaparser.ast.stmt.BlockStmt; 52import com.github.javaparser.ast.stmt.BreakStmt; 53import com.github.javaparser.ast.stmt.CatchClause; 54import com.github.javaparser.ast.stmt.ContinueStmt; 55import com.github.javaparser.ast.stmt.DoStmt; 56import com.github.javaparser.ast.stmt.EmptyStmt; 57import com.github.javaparser.ast.stmt.ExplicitConstructorInvocationStmt; 58import com.github.javaparser.ast.stmt.ExpressionStmt; 59import com.github.javaparser.ast.stmt.ForStmt; 60import com.github.javaparser.ast.stmt.ForeachStmt; 61import com.github.javaparser.ast.stmt.IfStmt; 62import com.github.javaparser.ast.stmt.LabeledStmt; 63import com.github.javaparser.ast.stmt.ReturnStmt; 64import com.github.javaparser.ast.stmt.Statement; 65import com.github.javaparser.ast.stmt.SwitchEntryStmt; 66import com.github.javaparser.ast.stmt.SwitchStmt; 67import com.github.javaparser.ast.stmt.SynchronizedStmt; 68import com.github.javaparser.ast.stmt.ThrowStmt; 69import com.github.javaparser.ast.stmt.TryStmt; 70import com.github.javaparser.ast.stmt.TypeDeclarationStmt; 71import com.github.javaparser.ast.stmt.WhileStmt; 72import com.github.javaparser.ast.type.*; 73 74import static com.github.javaparser.ast.internal.Utils.isNullOrEmpty; 75 76/** 77 * @author Julio Vilmar Gesser 78 */ 79public abstract class VoidVisitorAdapter<A> implements VoidVisitor<A> { 80 81 @Override public void visit(final AnnotationDeclaration n, final A arg) { 82 visitComment(n.getComment(), arg); 83 if (n.getJavaDoc() != null) { 84 n.getJavaDoc().accept(this, arg); 85 } 86 if (n.getAnnotations() != null) { 87 for (final AnnotationExpr a : n.getAnnotations()) { 88 a.accept(this, arg); 89 } 90 } 91 if (n.getMembers() != null) { 92 for (final BodyDeclaration member : n.getMembers()) { 93 member.accept(this, arg); 94 } 95 } 96 } 97 98 @Override public void visit(final AnnotationMemberDeclaration n, final A arg) { 99 visitComment(n.getComment(), arg); 100 if (n.getJavaDoc() != null) { 101 n.getJavaDoc().accept(this, arg); 102 } 103 if (n.getAnnotations() != null) { 104 for (final AnnotationExpr a : n.getAnnotations()) { 105 a.accept(this, arg); 106 } 107 } 108 n.getType().accept(this, arg); 109 if (n.getDefaultValue() != null) { 110 n.getDefaultValue().accept(this, arg); 111 } 112 } 113 114 @Override public void visit(final ArrayAccessExpr n, final A arg) { 115 visitComment(n.getComment(), arg); 116 n.getName().accept(this, arg); 117 n.getIndex().accept(this, arg); 118 } 119 120 @Override public void visit(final ArrayCreationExpr n, final A arg) { 121 visitComment(n.getComment(), arg); 122 n.getType().accept(this, arg); 123 if (!isNullOrEmpty(n.getDimensions())) { 124 for (final Expression dim : n.getDimensions()) { 125 dim.accept(this, arg); 126 } 127 } else { 128 n.getInitializer().accept(this, arg); 129 } 130 } 131 132 @Override public void visit(final ArrayInitializerExpr n, final A arg) { 133 visitComment(n.getComment(), arg); 134 if (n.getValues() != null) { 135 for (final Expression expr : n.getValues()) { 136 expr.accept(this, arg); 137 } 138 } 139 } 140 141 @Override public void visit(final AssertStmt n, final A arg) { 142 visitComment(n.getComment(), arg); 143 n.getCheck().accept(this, arg); 144 if (n.getMessage() != null) { 145 n.getMessage().accept(this, arg); 146 } 147 } 148 149 @Override public void visit(final AssignExpr n, final A arg) { 150 visitComment(n.getComment(), arg); 151 n.getTarget().accept(this, arg); 152 n.getValue().accept(this, arg); 153 } 154 155 @Override public void visit(final BinaryExpr n, final A arg) { 156 visitComment(n.getComment(), arg); 157 n.getLeft().accept(this, arg); 158 n.getRight().accept(this, arg); 159 } 160 161 @Override public void visit(final BlockComment n, final A arg) { 162 visitComment(n.getComment(), arg); 163 } 164 165 @Override public void visit(final BlockStmt n, final A arg) { 166 visitComment(n.getComment(), arg); 167 if (n.getStmts() != null) { 168 for (final Statement s : n.getStmts()) { 169 s.accept(this, arg); 170 } 171 } 172 } 173 174 @Override public void visit(final BooleanLiteralExpr n, final A arg) { 175 visitComment(n.getComment(), arg); 176 } 177 178 @Override public void visit(final BreakStmt n, final A arg) { 179 visitComment(n.getComment(), arg); 180 } 181 182 @Override public void visit(final CastExpr n, final A arg) { 183 visitComment(n.getComment(), arg); 184 n.getType().accept(this, arg); 185 n.getExpr().accept(this, arg); 186 } 187 188 @Override public void visit(final CatchClause n, final A arg) { 189 visitComment(n.getComment(), arg); 190 n.getExcept().accept(this, arg); 191 n.getCatchBlock().accept(this, arg); 192 } 193 194 @Override public void visit(final CharLiteralExpr n, final A arg) { 195 visitComment(n.getComment(), arg); 196 } 197 198 @Override public void visit(final ClassExpr n, final A arg) { 199 visitComment(n.getComment(), arg); 200 n.getType().accept(this, arg); 201 } 202 203 @Override public void visit(final ClassOrInterfaceDeclaration n, final A arg) { 204 visitComment(n.getComment(), arg); 205 if (n.getJavaDoc() != null) { 206 n.getJavaDoc().accept(this, arg); 207 } 208 if (n.getAnnotations() != null) { 209 for (final AnnotationExpr a : n.getAnnotations()) { 210 a.accept(this, arg); 211 } 212 } 213 if (n.getTypeParameters() != null) { 214 for (final TypeParameter t : n.getTypeParameters()) { 215 t.accept(this, arg); 216 } 217 } 218 if (n.getExtends() != null) { 219 for (final ClassOrInterfaceType c : n.getExtends()) { 220 c.accept(this, arg); 221 } 222 } 223 224 if (n.getImplements() != null) { 225 for (final ClassOrInterfaceType c : n.getImplements()) { 226 c.accept(this, arg); 227 } 228 } 229 if (n.getMembers() != null) { 230 for (final BodyDeclaration member : n.getMembers()) { 231 member.accept(this, arg); 232 } 233 } 234 } 235 236 @Override public void visit(final ClassOrInterfaceType n, final A arg) { 237 visitComment(n.getComment(), arg); 238 if (n.getScope() != null) { 239 n.getScope().accept(this, arg); 240 } 241 if (n.getTypeArgs() != null) { 242 for (final Type t : n.getTypeArgs()) { 243 t.accept(this, arg); 244 } 245 } 246 } 247 248 @Override public void visit(final CompilationUnit n, final A arg) { 249 visitComment(n.getComment(), arg); 250 if (n.getPackage() != null) { 251 n.getPackage().accept(this, arg); 252 } 253 if (n.getImports() != null) { 254 for (final ImportDeclaration i : n.getImports()) { 255 i.accept(this, arg); 256 } 257 } 258 if (n.getTypes() != null) { 259 for (final TypeDeclaration typeDeclaration : n.getTypes()) { 260 typeDeclaration.accept(this, arg); 261 } 262 } 263 } 264 265 @Override public void visit(final ConditionalExpr n, final A arg) { 266 visitComment(n.getComment(), arg); 267 n.getCondition().accept(this, arg); 268 n.getThenExpr().accept(this, arg); 269 n.getElseExpr().accept(this, arg); 270 } 271 272 @Override public void visit(final ConstructorDeclaration n, final A arg) { 273 visitComment(n.getComment(), arg); 274 if (n.getJavaDoc() != null) { 275 n.getJavaDoc().accept(this, arg); 276 } 277 if (n.getAnnotations() != null) { 278 for (final AnnotationExpr a : n.getAnnotations()) { 279 a.accept(this, arg); 280 } 281 } 282 if (n.getTypeParameters() != null) { 283 for (final TypeParameter t : n.getTypeParameters()) { 284 t.accept(this, arg); 285 } 286 } 287 if (n.getParameters() != null) { 288 for (final Parameter p : n.getParameters()) { 289 p.accept(this, arg); 290 } 291 } 292 if (n.getThrows() != null) { 293 for (final NameExpr name : n.getThrows()) { 294 name.accept(this, arg); 295 } 296 } 297 n.getBlock().accept(this, arg); 298 } 299 300 @Override public void visit(final ContinueStmt n, final A arg) { 301 visitComment(n.getComment(), arg); 302 } 303 304 @Override public void visit(final DoStmt n, final A arg) { 305 visitComment(n.getComment(), arg); 306 n.getBody().accept(this, arg); 307 n.getCondition().accept(this, arg); 308 } 309 310 @Override public void visit(final DoubleLiteralExpr n, final A arg) { 311 visitComment(n.getComment(), arg); 312 } 313 314 @Override public void visit(final EmptyMemberDeclaration n, final A arg) { 315 visitComment(n.getComment(), arg); 316 if (n.getJavaDoc() != null) { 317 n.getJavaDoc().accept(this, arg); 318 } 319 } 320 321 @Override public void visit(final EmptyStmt n, final A arg) { 322 visitComment(n.getComment(), arg); 323 } 324 325 @Override public void visit(final EmptyTypeDeclaration n, final A arg) { 326 visitComment(n.getComment(), arg); 327 if (n.getJavaDoc() != null) { 328 n.getJavaDoc().accept(this, arg); 329 } 330 } 331 332 @Override public void visit(final EnclosedExpr n, final A arg) { 333 visitComment(n.getComment(), arg); 334 n.getInner().accept(this, arg); 335 } 336 337 @Override public void visit(final EnumConstantDeclaration n, final A arg) { 338 visitComment(n.getComment(), arg); 339 if (n.getJavaDoc() != null) { 340 n.getJavaDoc().accept(this, arg); 341 } 342 if (n.getAnnotations() != null) { 343 for (final AnnotationExpr a : n.getAnnotations()) { 344 a.accept(this, arg); 345 } 346 } 347 if (n.getArgs() != null) { 348 for (final Expression e : n.getArgs()) { 349 e.accept(this, arg); 350 } 351 } 352 if (n.getClassBody() != null) { 353 for (final BodyDeclaration member : n.getClassBody()) { 354 member.accept(this, arg); 355 } 356 } 357 } 358 359 @Override public void visit(final EnumDeclaration n, final A arg) { 360 visitComment(n.getComment(), arg); 361 if (n.getJavaDoc() != null) { 362 n.getJavaDoc().accept(this, arg); 363 } 364 if (n.getAnnotations() != null) { 365 for (final AnnotationExpr a : n.getAnnotations()) { 366 a.accept(this, arg); 367 } 368 } 369 if (n.getImplements() != null) { 370 for (final ClassOrInterfaceType c : n.getImplements()) { 371 c.accept(this, arg); 372 } 373 } 374 if (n.getEntries() != null) { 375 for (final EnumConstantDeclaration e : n.getEntries()) { 376 e.accept(this, arg); 377 } 378 } 379 if (n.getMembers() != null) { 380 for (final BodyDeclaration member : n.getMembers()) { 381 member.accept(this, arg); 382 } 383 } 384 } 385 386 @Override public void visit(final ExplicitConstructorInvocationStmt n, final A arg) { 387 visitComment(n.getComment(), arg); 388 if (!n.isThis()) { 389 if (n.getExpr() != null) { 390 n.getExpr().accept(this, arg); 391 } 392 } 393 if (n.getTypeArgs() != null) { 394 for (final Type t : n.getTypeArgs()) { 395 t.accept(this, arg); 396 } 397 } 398 if (n.getArgs() != null) { 399 for (final Expression e : n.getArgs()) { 400 e.accept(this, arg); 401 } 402 } 403 } 404 405 @Override public void visit(final ExpressionStmt n, final A arg) { 406 visitComment(n.getComment(), arg); 407 n.getExpression().accept(this, arg); 408 } 409 410 @Override public void visit(final FieldAccessExpr n, final A arg) { 411 visitComment(n.getComment(), arg); 412 n.getScope().accept(this, arg); 413 } 414 415 @Override public void visit(final FieldDeclaration n, final A arg) { 416 visitComment(n.getComment(), arg); 417 if (n.getJavaDoc() != null) { 418 n.getJavaDoc().accept(this, arg); 419 } 420 if (n.getAnnotations() != null) { 421 for (final AnnotationExpr a : n.getAnnotations()) { 422 a.accept(this, arg); 423 } 424 } 425 n.getType().accept(this, arg); 426 for (final VariableDeclarator var : n.getVariables()) { 427 var.accept(this, arg); 428 } 429 } 430 431 @Override public void visit(final ForeachStmt n, final A arg) { 432 visitComment(n.getComment(), arg); 433 n.getVariable().accept(this, arg); 434 n.getIterable().accept(this, arg); 435 n.getBody().accept(this, arg); 436 } 437 438 @Override public void visit(final ForStmt n, final A arg) { 439 visitComment(n.getComment(), arg); 440 if (n.getInit() != null) { 441 for (final Expression e : n.getInit()) { 442 e.accept(this, arg); 443 } 444 } 445 if (n.getCompare() != null) { 446 n.getCompare().accept(this, arg); 447 } 448 if (n.getUpdate() != null) { 449 for (final Expression e : n.getUpdate()) { 450 e.accept(this, arg); 451 } 452 } 453 n.getBody().accept(this, arg); 454 } 455 456 @Override public void visit(final IfStmt n, final A arg) { 457 visitComment(n.getComment(), arg); 458 n.getCondition().accept(this, arg); 459 n.getThenStmt().accept(this, arg); 460 if (n.getElseStmt() != null) { 461 n.getElseStmt().accept(this, arg); 462 } 463 } 464 465 @Override public void visit(final ImportDeclaration n, final A arg) { 466 visitComment(n.getComment(), arg); 467 n.getName().accept(this, arg); 468 } 469 470 @Override public void visit(final InitializerDeclaration n, final A arg) { 471 visitComment(n.getComment(), arg); 472 if (n.getJavaDoc() != null) { 473 n.getJavaDoc().accept(this, arg); 474 } 475 n.getBlock().accept(this, arg); 476 } 477 478 @Override public void visit(final InstanceOfExpr n, final A arg) { 479 visitComment(n.getComment(), arg); 480 n.getExpr().accept(this, arg); 481 n.getType().accept(this, arg); 482 } 483 484 @Override public void visit(final IntegerLiteralExpr n, final A arg) { 485 visitComment(n.getComment(), arg); 486 } 487 488 @Override public void visit(final IntegerLiteralMinValueExpr n, final A arg) { 489 visitComment(n.getComment(), arg); 490 } 491 492 @Override public void visit(final JavadocComment n, final A arg) { 493 visitComment(n.getComment(), arg); 494 } 495 496 @Override public void visit(final LabeledStmt n, final A arg) { 497 visitComment(n.getComment(), arg); 498 n.getStmt().accept(this, arg); 499 } 500 501 @Override public void visit(final LineComment n, final A arg) { 502 visitComment(n.getComment(), arg); 503 } 504 505 @Override public void visit(final LongLiteralExpr n, final A arg) { 506 visitComment(n.getComment(), arg); 507 } 508 509 @Override public void visit(final LongLiteralMinValueExpr n, final A arg) { 510 visitComment(n.getComment(), arg); 511 } 512 513 @Override public void visit(final MarkerAnnotationExpr n, final A arg) { 514 visitComment(n.getComment(), arg); 515 n.getName().accept(this, arg); 516 } 517 518 @Override public void visit(final MemberValuePair n, final A arg) { 519 visitComment(n.getComment(), arg); 520 n.getValue().accept(this, arg); 521 } 522 523 @Override public void visit(final MethodCallExpr n, final A arg) { 524 visitComment(n.getComment(), arg); 525 if (n.getScope() != null) { 526 n.getScope().accept(this, arg); 527 } 528 if (n.getTypeArgs() != null) { 529 for (final Type t : n.getTypeArgs()) { 530 t.accept(this, arg); 531 } 532 } 533 if (n.getArgs() != null) { 534 for (final Expression e : n.getArgs()) { 535 e.accept(this, arg); 536 } 537 } 538 } 539 540 @Override public void visit(final MethodDeclaration n, final A arg) { 541 visitComment(n.getComment(), arg); 542 if (n.getJavaDoc() != null) { 543 n.getJavaDoc().accept(this, arg); 544 } 545 if (n.getAnnotations() != null) { 546 for (final AnnotationExpr a : n.getAnnotations()) { 547 a.accept(this, arg); 548 } 549 } 550 if (n.getTypeParameters() != null) { 551 for (final TypeParameter t : n.getTypeParameters()) { 552 t.accept(this, arg); 553 } 554 } 555 n.getType().accept(this, arg); 556 if (n.getParameters() != null) { 557 for (final Parameter p : n.getParameters()) { 558 p.accept(this, arg); 559 } 560 } 561 if (n.getThrows() != null) { 562 for (final NameExpr name : n.getThrows()) { 563 name.accept(this, arg); 564 } 565 } 566 if (n.getBody() != null) { 567 n.getBody().accept(this, arg); 568 } 569 } 570 571 @Override public void visit(final NameExpr n, final A arg) { 572 visitComment(n.getComment(), arg); 573 } 574 575 @Override public void visit(final NormalAnnotationExpr n, final A arg) { 576 visitComment(n.getComment(), arg); 577 n.getName().accept(this, arg); 578 if (n.getPairs() != null) { 579 for (final MemberValuePair m : n.getPairs()) { 580 m.accept(this, arg); 581 } 582 } 583 } 584 585 @Override public void visit(final NullLiteralExpr n, final A arg) { 586 visitComment(n.getComment(), arg); 587 } 588 589 @Override public void visit(final ObjectCreationExpr n, final A arg) { 590 visitComment(n.getComment(), arg); 591 if (n.getScope() != null) { 592 n.getScope().accept(this, arg); 593 } 594 if (n.getTypeArgs() != null) { 595 for (final Type t : n.getTypeArgs()) { 596 t.accept(this, arg); 597 } 598 } 599 n.getType().accept(this, arg); 600 if (n.getArgs() != null) { 601 for (final Expression e : n.getArgs()) { 602 e.accept(this, arg); 603 } 604 } 605 if (n.getAnonymousClassBody() != null) { 606 for (final BodyDeclaration member : n.getAnonymousClassBody()) { 607 member.accept(this, arg); 608 } 609 } 610 } 611 612 @Override public void visit(final PackageDeclaration n, final A arg) { 613 visitComment(n.getComment(), arg); 614 if (n.getAnnotations() != null) { 615 for (final AnnotationExpr a : n.getAnnotations()) { 616 a.accept(this, arg); 617 } 618 } 619 n.getName().accept(this, arg); 620 } 621 622 @Override public void visit(final Parameter n, final A arg) { 623 visitComment(n.getComment(), arg); 624 if (n.getAnnotations() != null) { 625 for (final AnnotationExpr a : n.getAnnotations()) { 626 a.accept(this, arg); 627 } 628 } 629 n.getType().accept(this, arg); 630 n.getId().accept(this, arg); 631 } 632 633 @Override public void visit(final MultiTypeParameter n, final A arg) { 634 visitComment(n.getComment(), arg); 635 if (n.getAnnotations() != null) { 636 for (final AnnotationExpr a : n.getAnnotations()) { 637 a.accept(this, arg); 638 } 639 } 640 for (final Type type : n.getTypes()) { 641 type.accept(this, arg); 642 } 643 n.getId().accept(this, arg); 644 } 645 646 @Override public void visit(final PrimitiveType n, final A arg) { 647 visitComment(n.getComment(), arg); 648 } 649 650 @Override public void visit(final QualifiedNameExpr n, final A arg) { 651 visitComment(n.getComment(), arg); 652 n.getQualifier().accept(this, arg); 653 } 654 655 @Override public void visit(final ReferenceType n, final A arg) { 656 visitComment(n.getComment(), arg); 657 n.getType().accept(this, arg); 658 } 659 660 @Override public void visit(final ReturnStmt n, final A arg) { 661 visitComment(n.getComment(), arg); 662 if (n.getExpr() != null) { 663 n.getExpr().accept(this, arg); 664 } 665 } 666 667 @Override public void visit(final SingleMemberAnnotationExpr n, final A arg) { 668 visitComment(n.getComment(), arg); 669 n.getName().accept(this, arg); 670 n.getMemberValue().accept(this, arg); 671 } 672 673 @Override public void visit(final StringLiteralExpr n, final A arg) { 674 visitComment(n.getComment(), arg); 675 } 676 677 @Override public void visit(final SuperExpr n, final A arg) { 678 visitComment(n.getComment(), arg); 679 if (n.getClassExpr() != null) { 680 n.getClassExpr().accept(this, arg); 681 } 682 } 683 684 @Override public void visit(final SwitchEntryStmt n, final A arg) { 685 visitComment(n.getComment(), arg); 686 if (n.getLabel() != null) { 687 n.getLabel().accept(this, arg); 688 } 689 if (n.getStmts() != null) { 690 for (final Statement s : n.getStmts()) { 691 s.accept(this, arg); 692 } 693 } 694 } 695 696 @Override public void visit(final SwitchStmt n, final A arg) { 697 visitComment(n.getComment(), arg); 698 n.getSelector().accept(this, arg); 699 if (n.getEntries() != null) { 700 for (final SwitchEntryStmt e : n.getEntries()) { 701 e.accept(this, arg); 702 } 703 } 704 } 705 706 @Override public void visit(final SynchronizedStmt n, final A arg) { 707 visitComment(n.getComment(), arg); 708 n.getExpr().accept(this, arg); 709 n.getBlock().accept(this, arg); 710 } 711 712 @Override public void visit(final ThisExpr n, final A arg) { 713 visitComment(n.getComment(), arg); 714 if (n.getClassExpr() != null) { 715 n.getClassExpr().accept(this, arg); 716 } 717 } 718 719 @Override public void visit(final ThrowStmt n, final A arg) { 720 visitComment(n.getComment(), arg); 721 n.getExpr().accept(this, arg); 722 } 723 724 @Override public void visit(final TryStmt n, final A arg) { 725 visitComment(n.getComment(), arg); 726 if (n.getResources() != null) { 727 for (final VariableDeclarationExpr v : n.getResources()) { 728 v.accept(this, arg); 729 } 730 } 731 n.getTryBlock().accept(this, arg); 732 if (n.getCatchs() != null) { 733 for (final CatchClause c : n.getCatchs()) { 734 c.accept(this, arg); 735 } 736 } 737 if (n.getFinallyBlock() != null) { 738 n.getFinallyBlock().accept(this, arg); 739 } 740 } 741 742 @Override public void visit(final TypeDeclarationStmt n, final A arg) { 743 visitComment(n.getComment(), arg); 744 n.getTypeDeclaration().accept(this, arg); 745 } 746 747 @Override public void visit(final TypeParameter n, final A arg) { 748 visitComment(n.getComment(), arg); 749 if (n.getTypeBound() != null) { 750 for (final ClassOrInterfaceType c : n.getTypeBound()) { 751 c.accept(this, arg); 752 } 753 } 754 } 755 756 @Override public void visit(final UnaryExpr n, final A arg) { 757 visitComment(n.getComment(), arg); 758 n.getExpr().accept(this, arg); 759 } 760 761 @Override public void visit(final UnknownType n, final A arg) { 762 visitComment(n.getComment(), arg); 763 } 764 765 @Override public void visit(final VariableDeclarationExpr n, final A arg) { 766 visitComment(n.getComment(), arg); 767 if (n.getAnnotations() != null) { 768 for (final AnnotationExpr a : n.getAnnotations()) { 769 a.accept(this, arg); 770 } 771 } 772 n.getType().accept(this, arg); 773 for (final VariableDeclarator v : n.getVars()) { 774 v.accept(this, arg); 775 } 776 } 777 778 @Override public void visit(final VariableDeclarator n, final A arg) { 779 visitComment(n.getComment(), arg); 780 n.getId().accept(this, arg); 781 if (n.getInit() != null) { 782 n.getInit().accept(this, arg); 783 } 784 } 785 786 @Override public void visit(final VariableDeclaratorId n, final A arg) { 787 visitComment(n.getComment(), arg); 788 } 789 790 @Override public void visit(final VoidType n, final A arg) { 791 visitComment(n.getComment(), arg); 792 } 793 794 @Override public void visit(final WhileStmt n, final A arg) { 795 visitComment(n.getComment(), arg); 796 n.getCondition().accept(this, arg); 797 n.getBody().accept(this, arg); 798 } 799 800 @Override public void visit(final WildcardType n, final A arg) { 801 visitComment(n.getComment(), arg); 802 if (n.getExtends() != null) { 803 n.getExtends().accept(this, arg); 804 } 805 if (n.getSuper() != null) { 806 n.getSuper().accept(this, arg); 807 } 808 } 809 810 @Override 811 public void visit(LambdaExpr n, final A arg) { 812 if (n.getParameters() != null) { 813 for (final Parameter a : n.getParameters()) { 814 a.accept(this, arg); 815 } 816 } 817 if (n.getBody() != null) { 818 n.getBody().accept(this, arg); 819 } 820 } 821 822 @Override 823 public void visit(MethodReferenceExpr n, final A arg) { 824 if (n.getTypeParameters() != null) { 825 for (final TypeParameter a : n.getTypeParameters()) { 826 a.accept(this, arg); 827 } 828 } 829 if (n.getScope() != null) { 830 n.getScope().accept(this, arg); 831 } 832 } 833 834 @Override 835 public void visit(TypeExpr n, final A arg) { 836 if (n.getType() != null) { 837 n.getType().accept(this, arg); 838 } 839 } 840 841 private void visitComment(final Comment n, final A arg) { 842 if (n != null) { 843 n.accept(this, arg); 844 } 845 } 846} 847