From 7e7b36d35cf3c0411281ffa8873e85ac9241d5df Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Tue, 20 Aug 2019 13:59:43 -0400 Subject: [PATCH] Added ASTNodes for all Scala AST Nodes to do direct translation. --- .../sourceforge/pmd/cpd/ScalaTokenizer.java | 5 +- .../pmd/lang/scala/ScalaParser.java | 33 +- .../pmd/lang/scala/ast/ASTSourceNode.java | 28 - .../pmd/lang/scala/ast/DumpFacade.java | 6 +- .../pmd/lang/scala/ast/ScalaNode.java | 7 +- .../lang/scala/ast/ScalaParserVisitor.java | 405 ++++++++- .../scala/ast/ScalaParserVisitorAdapter.java | 787 ++++++++++++++++- .../pmd/lang/scala/ast/ScalaTreeBuilder.java | 385 +++++++++ .../pmd/lang/scala/ast/ScalaWrapperNode.java | 155 ---- .../pmd/lang/scala/ast/nodes/ASTCase.java | 15 + .../lang/scala/ast/nodes/ASTCtorPrimary.java | 14 + .../scala/ast/nodes/ASTCtorSecondary.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDeclDef.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDeclType.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDeclVal.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDeclVar.java | 14 + .../lang/scala/ast/nodes/ASTDefnClass.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDefnDef.java | 14 + .../lang/scala/ast/nodes/ASTDefnMacro.java | 14 + .../lang/scala/ast/nodes/ASTDefnObject.java | 14 + .../lang/scala/ast/nodes/ASTDefnTrait.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDefnType.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDefnVal.java | 14 + .../pmd/lang/scala/ast/nodes/ASTDefnVar.java | 14 + .../ast/nodes/ASTEnumeratorGenerator.java | 14 + .../scala/ast/nodes/ASTEnumeratorGuard.java | 14 + .../scala/ast/nodes/ASTEnumeratorVal.java | 14 + .../pmd/lang/scala/ast/nodes/ASTImport.java | 14 + .../lang/scala/ast/nodes/ASTImporteeName.java | 14 + .../scala/ast/nodes/ASTImporteeRename.java | 14 + .../scala/ast/nodes/ASTImporteeUnimport.java | 14 + .../scala/ast/nodes/ASTImporteeWildcard.java | 14 + .../pmd/lang/scala/ast/nodes/ASTImporter.java | 14 + .../pmd/lang/scala/ast/nodes/ASTInit.java | 14 + .../lang/scala/ast/nodes/ASTLitBoolean.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitByte.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitChar.java | 19 + .../lang/scala/ast/nodes/ASTLitDouble.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitFloat.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitInt.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitLong.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitNull.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitShort.java | 19 + .../lang/scala/ast/nodes/ASTLitString.java | 19 + .../lang/scala/ast/nodes/ASTLitSymbol.java | 19 + .../pmd/lang/scala/ast/nodes/ASTLitUnit.java | 19 + .../lang/scala/ast/nodes/ASTModAbstract.java | 14 + .../pmd/lang/scala/ast/nodes/ASTModAnnot.java | 14 + .../pmd/lang/scala/ast/nodes/ASTModCase.java | 14 + .../scala/ast/nodes/ASTModContravariant.java | 14 + .../lang/scala/ast/nodes/ASTModCovariant.java | 14 + .../pmd/lang/scala/ast/nodes/ASTModFinal.java | 14 + .../lang/scala/ast/nodes/ASTModImplicit.java | 14 + .../lang/scala/ast/nodes/ASTModInline.java | 14 + .../pmd/lang/scala/ast/nodes/ASTModLazy.java | 14 + .../lang/scala/ast/nodes/ASTModOverride.java | 14 + .../lang/scala/ast/nodes/ASTModPrivate.java | 14 + .../lang/scala/ast/nodes/ASTModProtected.java | 14 + .../lang/scala/ast/nodes/ASTModSealed.java | 14 + .../lang/scala/ast/nodes/ASTModValParam.java | 14 + .../lang/scala/ast/nodes/ASTModVarParam.java | 14 + .../scala/ast/nodes/ASTNameAnonymous.java | 19 + .../scala/ast/nodes/ASTNameIndeterminate.java | 19 + .../scala/ast/nodes/ASTPatAlternative.java | 14 + .../pmd/lang/scala/ast/nodes/ASTPatBind.java | 14 + .../lang/scala/ast/nodes/ASTPatExtract.java | 14 + .../scala/ast/nodes/ASTPatExtractInfix.java | 14 + .../scala/ast/nodes/ASTPatInterpolate.java | 14 + .../scala/ast/nodes/ASTPatSeqWildcard.java | 14 + .../pmd/lang/scala/ast/nodes/ASTPatTuple.java | 14 + .../pmd/lang/scala/ast/nodes/ASTPatTyped.java | 14 + .../pmd/lang/scala/ast/nodes/ASTPatVar.java | 14 + .../lang/scala/ast/nodes/ASTPatWildcard.java | 14 + .../pmd/lang/scala/ast/nodes/ASTPatXml.java | 14 + .../pmd/lang/scala/ast/nodes/ASTPkg.java | 14 + .../lang/scala/ast/nodes/ASTPkgObject.java | 14 + .../pmd/lang/scala/ast/nodes/ASTQuasi.java | 14 + .../pmd/lang/scala/ast/nodes/ASTSelf.java | 14 + .../pmd/lang/scala/ast/nodes/ASTSource.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTemplate.java | 14 + .../lang/scala/ast/nodes/ASTTermAnnotate.java | 14 + .../lang/scala/ast/nodes/ASTTermApply.java | 14 + .../scala/ast/nodes/ASTTermApplyInfix.java | 14 + .../scala/ast/nodes/ASTTermApplyType.java | 14 + .../scala/ast/nodes/ASTTermApplyUnary.java | 14 + .../lang/scala/ast/nodes/ASTTermAscribe.java | 14 + .../lang/scala/ast/nodes/ASTTermAssign.java | 14 + .../lang/scala/ast/nodes/ASTTermBlock.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermDo.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermEta.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermFor.java | 14 + .../lang/scala/ast/nodes/ASTTermForYield.java | 14 + .../lang/scala/ast/nodes/ASTTermFunction.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermIf.java | 14 + .../scala/ast/nodes/ASTTermInterpolate.java | 14 + .../lang/scala/ast/nodes/ASTTermMatch.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermName.java | 19 + .../pmd/lang/scala/ast/nodes/ASTTermNew.java | 14 + .../scala/ast/nodes/ASTTermNewAnonymous.java | 14 + .../lang/scala/ast/nodes/ASTTermParam.java | 14 + .../ast/nodes/ASTTermPartialFunction.java | 14 + .../scala/ast/nodes/ASTTermPlaceholder.java | 14 + .../lang/scala/ast/nodes/ASTTermRepeated.java | 14 + .../lang/scala/ast/nodes/ASTTermReturn.java | 14 + .../lang/scala/ast/nodes/ASTTermSelect.java | 14 + .../lang/scala/ast/nodes/ASTTermSuper.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermThis.java | 14 + .../lang/scala/ast/nodes/ASTTermThrow.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermTry.java | 14 + .../ast/nodes/ASTTermTryWithHandler.java | 14 + .../lang/scala/ast/nodes/ASTTermTuple.java | 14 + .../lang/scala/ast/nodes/ASTTermWhile.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTermXml.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTypeAnd.java | 14 + .../lang/scala/ast/nodes/ASTTypeAnnotate.java | 14 + .../lang/scala/ast/nodes/ASTTypeApply.java | 14 + .../scala/ast/nodes/ASTTypeApplyInfix.java | 14 + .../lang/scala/ast/nodes/ASTTypeBounds.java | 14 + .../lang/scala/ast/nodes/ASTTypeByName.java | 14 + .../scala/ast/nodes/ASTTypeExistential.java | 14 + .../lang/scala/ast/nodes/ASTTypeFunction.java | 14 + .../ast/nodes/ASTTypeImplicitFunction.java | 14 + .../lang/scala/ast/nodes/ASTTypeLambda.java | 14 + .../lang/scala/ast/nodes/ASTTypeMethod.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTypeName.java | 19 + .../pmd/lang/scala/ast/nodes/ASTTypeOr.java | 14 + .../lang/scala/ast/nodes/ASTTypeParam.java | 14 + .../scala/ast/nodes/ASTTypePlaceholder.java | 14 + .../lang/scala/ast/nodes/ASTTypeProject.java | 14 + .../lang/scala/ast/nodes/ASTTypeRefine.java | 14 + .../lang/scala/ast/nodes/ASTTypeRepeated.java | 14 + .../lang/scala/ast/nodes/ASTTypeSelect.java | 14 + .../scala/ast/nodes/ASTTypeSingleton.java | 14 + .../lang/scala/ast/nodes/ASTTypeTuple.java | 14 + .../pmd/lang/scala/ast/nodes/ASTTypeVar.java | 15 + .../pmd/lang/scala/ast/nodes/ASTTypeWith.java | 14 + .../scala/ast/nodes/AbstractScalaNode.java | 63 ++ .../pmd/lang/scala/rule/ScalaRule.java | 794 +++++++++++++++++- .../scala/rule/ScalaRuleChainVisitor.java | 11 +- 139 files changed, 4288 insertions(+), 251 deletions(-) delete mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSourceNode.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaTreeBuilder.java delete mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaWrapperNode.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTCase.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTCtorPrimary.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTCtorSecondary.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDeclDef.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDeclType.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDeclVal.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDeclVar.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnClass.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnDef.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnMacro.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnObject.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnTrait.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnType.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnVal.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTDefnVar.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTEnumeratorGenerator.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTEnumeratorGuard.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTEnumeratorVal.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTImport.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTImporteeName.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTImporteeRename.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTImporteeUnimport.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTImporteeWildcard.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTImporter.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTInit.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitBoolean.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitByte.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitChar.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitDouble.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitFloat.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitInt.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitLong.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitNull.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitShort.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitString.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitSymbol.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTLitUnit.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModAbstract.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModAnnot.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModCase.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModContravariant.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModCovariant.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModFinal.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModImplicit.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModInline.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModLazy.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModOverride.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModPrivate.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModProtected.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModSealed.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModValParam.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTModVarParam.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTNameAnonymous.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTNameIndeterminate.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatAlternative.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatBind.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatExtract.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatExtractInfix.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatInterpolate.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatSeqWildcard.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatTuple.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatTyped.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatVar.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatWildcard.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPatXml.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPkg.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTPkgObject.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTQuasi.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTSelf.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTSource.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTemplate.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermAnnotate.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermApply.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermApplyInfix.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermApplyType.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermApplyUnary.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermAscribe.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermAssign.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermBlock.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermDo.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermEta.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermFor.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermForYield.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermFunction.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermIf.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermInterpolate.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermMatch.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermName.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermNew.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermNewAnonymous.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermParam.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermPartialFunction.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermPlaceholder.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermRepeated.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermReturn.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermSelect.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermSuper.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermThis.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermThrow.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermTry.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermTryWithHandler.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermTuple.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermWhile.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTermXml.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeAnd.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeAnnotate.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeApply.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeApplyInfix.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeBounds.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeByName.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeExistential.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeFunction.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeImplicitFunction.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeLambda.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeMethod.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeName.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeOr.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeParam.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypePlaceholder.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeProject.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeRefine.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeRepeated.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeSelect.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeSingleton.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeTuple.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeVar.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/ASTTypeWith.java create mode 100644 pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/nodes/AbstractScalaNode.java diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java b/pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java index 38a813592b..0bb15eaa86 100644 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java +++ b/pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java @@ -106,9 +106,8 @@ public class ScalaTokenizer implements Tokenizer { boolean skip = false; if (token.text() != null) { // skip any token that is whitespaces - skip |= token instanceof Token.Space || token instanceof Token.Tab - || token instanceof Token.CR || token instanceof Token.LF - || token instanceof Token.FF || token instanceof Token.LFLF; + skip |= token instanceof Token.Space || token instanceof Token.Tab || token instanceof Token.CR + || token instanceof Token.LF || token instanceof Token.FF || token instanceof Token.LFLF; } return skip; } diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java index 677f8d54f5..cf8e668c61 100644 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java +++ b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java @@ -16,12 +16,11 @@ import net.sourceforge.pmd.lang.ParserOptions; import net.sourceforge.pmd.lang.TokenManager; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.ParseException; -import net.sourceforge.pmd.lang.scala.ast.ASTSourceNode; -import net.sourceforge.pmd.lang.scala.ast.ScalaWrapperNode; +import net.sourceforge.pmd.lang.scala.ast.ScalaTreeBuilder; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTSource; import scala.meta.Dialect; import scala.meta.Source; -import scala.meta.Tree; import scala.meta.inputs.Input; import scala.meta.internal.parsers.ScalametaParser; @@ -33,8 +32,6 @@ import scala.meta.internal.parsers.ScalametaParser; public class ScalaParser extends AbstractParser { private final Dialect dialect; - private Map nodeCache = new HashMap<>(); - /** * Create a parser using the given Scala Dialect and set of parser options. * @@ -55,7 +52,6 @@ public class ScalaParser extends AbstractParser { @Override public Node parse(String fileName, Reader source) throws ParseException { - nodeCache.clear(); Input.VirtualFile virtualFile; try { String sourceString = IOUtils.toString(source); @@ -64,30 +60,7 @@ public class ScalaParser extends AbstractParser { throw new ParseException(e); } Source src = new ScalametaParser(virtualFile, dialect).parseSource(); - ASTSourceNode srcNode = new ASTSourceNode(this, src); - nodeCache.put(src, srcNode); - return srcNode; - } - - /** - * Creates a wrapper around the given node so that we can interact with PMD - * systems using the underlying scala node. - * - * @param scalaNode - * a node from Scala's parsing - * @return A Java-wrapped version of the given node, using a cache if this - * has been previously wrapped, or null, if the given node is null - */ - public ScalaWrapperNode wrapNode(Tree scalaNode) { - if (scalaNode == null) { - return null; - } - ScalaWrapperNode node = nodeCache.get(scalaNode); - if (node == null) { - node = new ScalaWrapperNode(this, scalaNode); - nodeCache.put(scalaNode, node); - } - return node; + return (ASTSource) new ScalaTreeBuilder().build(src); } @Override diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSourceNode.java b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSourceNode.java deleted file mode 100644 index 64041842f4..0000000000 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSourceNode.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.scala.ast; - -import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.scala.ScalaParser; - -import scala.meta.Source; - -/** - * The root node for a Scala AST. - */ -public class ASTSourceNode extends ScalaWrapperNode implements RootNode { - - /** - * Create a new root node wrapper for the Scala root AST node. - * - * @param scalaParser - * the ScalaParser used to generate the node - * @param scalaNode - * the scalaNode node to wrap - */ - public ASTSourceNode(ScalaParser scalaParser, Source scalaNode) { - super(scalaParser, scalaNode); - } -} diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/DumpFacade.java b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/DumpFacade.java index 1bbdbeab39..75fca35619 100644 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/DumpFacade.java +++ b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/DumpFacade.java @@ -29,7 +29,7 @@ public class DumpFacade extends ScalaParserVisitorAdapter { * @param node * the node to start with. Not necessarily a tree root. */ - public void dump(Writer outWriter, String prefix, boolean shouldRecurse, ScalaNode node) { + public void dump(Writer outWriter, String prefix, boolean shouldRecurse, ScalaNode node) { this.writer = outWriter instanceof PrintWriter ? (PrintWriter) outWriter : new PrintWriter(outWriter); this.recurse = shouldRecurse; this.visit(node, prefix); @@ -37,7 +37,7 @@ public class DumpFacade extends ScalaParserVisitorAdapter { } @Override - public Object visit(ScalaNode node, Object data) { + public Object visit(ScalaNode node, Object data) { dump(node, (String) data); if (recurse) { return super.visit(node, data + " "); @@ -46,7 +46,7 @@ public class DumpFacade extends ScalaParserVisitorAdapter { } } - private void dump(ScalaNode node, String prefix) { + private void dump(ScalaNode node, String prefix) { writer.print(prefix); writer.print(node.getXPathNodeName()); diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java index 71cc2b4675..ea1faac4ea 100644 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java +++ b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java @@ -11,8 +11,11 @@ import scala.meta.Tree; /** * A Base interface of a Scala Node. Defines several required methods of all * nodes. + * + * @param + * The Scala node type that extends Scala's Tree trait */ -public interface ScalaNode extends Node { +public interface ScalaNode extends Node { /** * Accept a visitor and traverse this node. * @@ -41,5 +44,5 @@ public interface ScalaNode extends Node { * * @return the Scala Node for this node */ - Tree getNode(); + T getNode(); } diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java index dcd2941908..bc8b41dac7 100644 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java +++ b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java @@ -4,21 +4,138 @@ package net.sourceforge.pmd.lang.scala.ast; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTCase; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTCtorPrimary; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTCtorSecondary; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclDef; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclType; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclVal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnClass; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnDef; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnMacro; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnObject; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnTrait; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnType; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnVal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTEnumeratorGenerator; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTEnumeratorGuard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTEnumeratorVal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImport; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeRename; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeUnimport; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeWildcard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporter; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTInit; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitBoolean; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitByte; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitChar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitDouble; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitFloat; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitInt; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitLong; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitNull; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitShort; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitString; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitSymbol; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitUnit; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModAbstract; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModAnnot; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModCase; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModContravariant; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModCovariant; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModFinal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModImplicit; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModInline; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModLazy; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModOverride; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModPrivate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModProtected; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModSealed; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModValParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModVarParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTNameAnonymous; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTNameIndeterminate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatAlternative; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatBind; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatExtract; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatExtractInfix; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatInterpolate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatSeqWildcard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatTuple; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatTyped; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatWildcard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatXml; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPkg; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPkgObject; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTQuasi; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTSelf; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTSource; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTemplate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermAnnotate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApply; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApplyInfix; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApplyType; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApplyUnary; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermAscribe; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermAssign; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermBlock; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermDo; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermEta; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermFor; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermForYield; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermIf; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermInterpolate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermMatch; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermNew; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermNewAnonymous; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermPartialFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermPlaceholder; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermRepeated; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermReturn; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermSelect; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermSuper; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermThis; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermThrow; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermTry; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermTryWithHandler; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermTuple; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermWhile; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermXml; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeAnd; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeAnnotate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeApply; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeApplyInfix; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeBounds; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeByName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeExistential; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeImplicitFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeLambda; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeMethod; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeOr; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypePlaceholder; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeProject; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeRefine; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeRepeated; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeSelect; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeSingleton; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeTuple; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeWith; + /** * A Visitor Pattern Interface for the Scala AST. */ public interface ScalaParserVisitor { - /** - * Visit the Source Node (the root node of the tree). - * - * @param node - * the root node of the tree - * @param data - * context-specific data - * @return context-specific data - */ - Object visit(ASTSourceNode node, Object data); - /** * Visit an arbitrary Scala Node (any node in the tree). * @@ -28,5 +145,269 @@ public interface ScalaParserVisitor { * context-specific data * @return context-specific data */ - Object visit(ScalaNode node, Object data); + Object visit(ScalaNode node, Object data); + + /** + * Visit the Source Node (the root node of the tree). + * + * @param node + * the root node of the tree + * @param data + * context-specific data + * @return context-specific data + */ + Object visit(ASTSource node, Object data); + + Object visit(ASTCase node, Object data); + + Object visit(ASTCtorPrimary node, Object data); + + Object visit(ASTCtorSecondary node, Object data); + + Object visit(ASTDeclDef node, Object data); + + Object visit(ASTDeclType node, Object data); + + Object visit(ASTDeclVal node, Object data); + + Object visit(ASTDeclVar node, Object data); + + Object visit(ASTDefnClass node, Object data); + + Object visit(ASTDefnDef node, Object data); + + Object visit(ASTDefnMacro node, Object data); + + Object visit(ASTDefnObject node, Object data); + + Object visit(ASTDefnTrait node, Object data); + + Object visit(ASTDefnType node, Object data); + + Object visit(ASTDefnVal node, Object data); + + Object visit(ASTDefnVar node, Object data); + + Object visit(ASTEnumeratorGenerator node, Object data); + + Object visit(ASTEnumeratorGuard node, Object data); + + Object visit(ASTEnumeratorVal node, Object data); + + Object visit(ASTImport node, Object data); + + Object visit(ASTImporteeName node, Object data); + + Object visit(ASTImporteeRename node, Object data); + + Object visit(ASTImporteeUnimport node, Object data); + + Object visit(ASTImporteeWildcard node, Object data); + + Object visit(ASTImporter node, Object data); + + Object visit(ASTInit node, Object data); + + Object visit(ASTLitBoolean node, Object data); + + Object visit(ASTLitByte node, Object data); + + Object visit(ASTLitChar node, Object data); + + Object visit(ASTLitDouble node, Object data); + + Object visit(ASTLitFloat node, Object data); + + Object visit(ASTLitInt node, Object data); + + Object visit(ASTLitLong node, Object data); + + Object visit(ASTLitNull node, Object data); + + Object visit(ASTLitShort node, Object data); + + Object visit(ASTLitString node, Object data); + + Object visit(ASTLitSymbol node, Object data); + + Object visit(ASTLitUnit node, Object data); + + Object visit(ASTModAbstract node, Object data); + + Object visit(ASTModAnnot node, Object data); + + Object visit(ASTModCase node, Object data); + + Object visit(ASTModContravariant node, Object data); + + Object visit(ASTModCovariant node, Object data); + + Object visit(ASTModFinal node, Object data); + + Object visit(ASTModImplicit node, Object data); + + Object visit(ASTModInline node, Object data); + + Object visit(ASTModLazy node, Object data); + + Object visit(ASTModOverride node, Object data); + + Object visit(ASTModPrivate node, Object data); + + Object visit(ASTModProtected node, Object data); + + Object visit(ASTModSealed node, Object data); + + Object visit(ASTModValParam node, Object data); + + Object visit(ASTModVarParam node, Object data); + + Object visit(ASTNameAnonymous node, Object data); + + Object visit(ASTNameIndeterminate node, Object data); + + Object visit(ASTPatAlternative node, Object data); + + Object visit(ASTPatBind node, Object data); + + Object visit(ASTPatExtract node, Object data); + + Object visit(ASTPatExtractInfix node, Object data); + + Object visit(ASTPatInterpolate node, Object data); + + Object visit(ASTPatSeqWildcard node, Object data); + + Object visit(ASTPatTuple node, Object data); + + Object visit(ASTPatTyped node, Object data); + + Object visit(ASTPatVar node, Object data); + + Object visit(ASTPatWildcard node, Object data); + + Object visit(ASTPatXml node, Object data); + + Object visit(ASTPkg node, Object data); + + Object visit(ASTPkgObject node, Object data); + + Object visit(ASTQuasi node, Object data); + + Object visit(ASTSelf node, Object data); + + Object visit(ASTTemplate node, Object data); + + Object visit(ASTTermAnnotate node, Object data); + + Object visit(ASTTermApply node, Object data); + + Object visit(ASTTermApplyInfix node, Object data); + + Object visit(ASTTermApplyType node, Object data); + + Object visit(ASTTermApplyUnary node, Object data); + + Object visit(ASTTermAscribe node, Object data); + + Object visit(ASTTermAssign node, Object data); + + Object visit(ASTTermBlock node, Object data); + + Object visit(ASTTermDo node, Object data); + + Object visit(ASTTermEta node, Object data); + + Object visit(ASTTermFor node, Object data); + + Object visit(ASTTermForYield node, Object data); + + Object visit(ASTTermFunction node, Object data); + + Object visit(ASTTermIf node, Object data); + + Object visit(ASTTermInterpolate node, Object data); + + Object visit(ASTTermMatch node, Object data); + + Object visit(ASTTermName node, Object data); + + Object visit(ASTTermNewAnonymous node, Object data); + + Object visit(ASTTermNew node, Object data); + + Object visit(ASTTermParam node, Object data); + + Object visit(ASTTermPartialFunction node, Object data); + + Object visit(ASTTermPlaceholder node, Object data); + + Object visit(ASTTermRepeated node, Object data); + + Object visit(ASTTermReturn node, Object data); + + Object visit(ASTTermSelect node, Object data); + + Object visit(ASTTermSuper node, Object data); + + Object visit(ASTTermThis node, Object data); + + Object visit(ASTTermThrow node, Object data); + + Object visit(ASTTermTry node, Object data); + + Object visit(ASTTermTryWithHandler node, Object data); + + Object visit(ASTTermTuple node, Object data); + + Object visit(ASTTermWhile node, Object data); + + Object visit(ASTTermXml node, Object data); + + Object visit(ASTTypeAnd node, Object data); + + Object visit(ASTTypeAnnotate node, Object data); + + Object visit(ASTTypeApply node, Object data); + + Object visit(ASTTypeApplyInfix node, Object data); + + Object visit(ASTTypeBounds node, Object data); + + Object visit(ASTTypeByName node, Object data); + + Object visit(ASTTypeExistential node, Object data); + + Object visit(ASTTypeFunction node, Object data); + + Object visit(ASTTypeImplicitFunction node, Object data); + + Object visit(ASTTypeLambda node, Object data); + + Object visit(ASTTypeMethod node, Object data); + + Object visit(ASTTypeName node, Object data); + + Object visit(ASTTypeOr node, Object data); + + Object visit(ASTTypeParam node, Object data); + + Object visit(ASTTypePlaceholder node, Object data); + + Object visit(ASTTypeProject node, Object data); + + Object visit(ASTTypeRefine node, Object data); + + Object visit(ASTTypeRepeated node, Object data); + + Object visit(ASTTypeSelect node, Object data); + + Object visit(ASTTypeSingleton node, Object data); + + Object visit(ASTTypeTuple node, Object data); + + Object visit(ASTTypeVar node, Object data); + + Object visit(ASTTypeWith node, Object data); + } diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java index cb89a3ad93..f50fc6990c 100644 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java +++ b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java @@ -4,17 +4,798 @@ package net.sourceforge.pmd.lang.scala.ast; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTCase; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTCtorPrimary; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTCtorSecondary; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclDef; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclType; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclVal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDeclVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnClass; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnDef; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnMacro; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnObject; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnTrait; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnType; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnVal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTDefnVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTEnumeratorGenerator; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTEnumeratorGuard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTEnumeratorVal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImport; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeRename; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeUnimport; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporteeWildcard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTImporter; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTInit; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitBoolean; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitByte; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitChar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitDouble; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitFloat; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitInt; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitLong; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitNull; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitShort; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitString; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitSymbol; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTLitUnit; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModAbstract; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModAnnot; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModCase; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModContravariant; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModCovariant; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModFinal; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModImplicit; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModInline; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModLazy; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModOverride; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModPrivate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModProtected; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModSealed; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModValParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTModVarParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTNameAnonymous; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTNameIndeterminate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatAlternative; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatBind; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatExtract; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatExtractInfix; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatInterpolate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatSeqWildcard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatTuple; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatTyped; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatWildcard; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPatXml; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPkg; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTPkgObject; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTQuasi; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTSelf; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTSource; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTemplate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermAnnotate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApply; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApplyInfix; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApplyType; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermApplyUnary; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermAscribe; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermAssign; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermBlock; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermDo; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermEta; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermFor; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermForYield; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermIf; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermInterpolate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermMatch; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermNew; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermNewAnonymous; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermPartialFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermPlaceholder; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermRepeated; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermReturn; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermSelect; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermSuper; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermThis; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermThrow; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermTry; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermTryWithHandler; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermTuple; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermWhile; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTermXml; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeAnd; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeAnnotate; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeApply; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeApplyInfix; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeBounds; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeByName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeExistential; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeImplicitFunction; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeLambda; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeMethod; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeName; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeOr; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeParam; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypePlaceholder; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeProject; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeRefine; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeRepeated; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeSelect; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeSingleton; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeTuple; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeVar; +import net.sourceforge.pmd.lang.scala.ast.nodes.ASTTypeWith; + +import scala.meta.Case; +import scala.meta.Ctor; +import scala.meta.Decl; +import scala.meta.Defn; +import scala.meta.Enumerator; +import scala.meta.Import; +import scala.meta.Importee; +import scala.meta.Importer; +import scala.meta.Init; +import scala.meta.Lit; +import scala.meta.Mod; +import scala.meta.Name; +import scala.meta.Pat; +import scala.meta.Pkg; +import scala.meta.Self; +import scala.meta.Source; +import scala.meta.Template; +import scala.meta.Term; +import scala.meta.Tree.Quasi; +import scala.meta.Type; + /** * An Adapter for the Scala Parser that implements the Visitor Pattern. */ public class ScalaParserVisitorAdapter implements ScalaParserVisitor { + @Override - public Object visit(ScalaNode node, Object data) { + public Object visit(ScalaNode node, Object data) { return node.childrenAccept(this, data); } @Override - public Object visit(ASTSourceNode node, Object data) { - return visit((ScalaNode) node, data); + public Object visit(ASTSource node, Object data) { + return visit((ScalaNode) node, data); } + + @Override + public Object visit(ASTCase node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTCtorPrimary node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTCtorSecondary node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDeclDef node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDeclType node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDeclVal node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDeclVar node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnClass node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnDef node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnMacro node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnObject node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnTrait node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnType node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnVal node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTDefnVar node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTEnumeratorGenerator node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTEnumeratorGuard node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTEnumeratorVal node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTImport node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTImporteeName node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTImporteeRename node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTImporteeUnimport node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTImporteeWildcard node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTImporter node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTInit node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitBoolean node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitByte node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitChar node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitDouble node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitFloat node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitInt node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitLong node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitNull node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitShort node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitString node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitSymbol node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTLitUnit node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModAbstract node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModAnnot node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModCase node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModContravariant node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModCovariant node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModFinal node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModImplicit node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModInline node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModLazy node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModOverride node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModPrivate node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModProtected node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModSealed node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModValParam node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTModVarParam node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTNameAnonymous node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTNameIndeterminate node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatAlternative node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatBind node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatExtract node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatExtractInfix node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatInterpolate node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatSeqWildcard node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatTuple node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatTyped node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatVar node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatWildcard node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPatXml node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPkg node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTPkgObject node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTQuasi node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTSelf node, Object data) { + return visit((ScalaNode) node, data); + } + + @Override + public Object visit(ASTTemplate node, Object data) { + return visit((ScalaNode