Move scala parser into ast package
This commit is contained in:
@ -6,6 +6,7 @@ package net.sourceforge.pmd.lang.scala;
|
||||
|
||||
import net.sourceforge.pmd.lang.AbstractPmdLanguageVersionHandler;
|
||||
import net.sourceforge.pmd.lang.ParserOptions;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ScalaParser;
|
||||
|
||||
import scala.meta.Dialect;
|
||||
|
||||
|
@ -2,7 +2,11 @@
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.scala;
|
||||
/*
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.scala.ast;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
@ -12,7 +16,6 @@ import org.apache.commons.io.IOUtils;
|
||||
import net.sourceforge.pmd.lang.AbstractParser;
|
||||
import net.sourceforge.pmd.lang.ParserOptions;
|
||||
import net.sourceforge.pmd.lang.ast.ParseException;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTSource;
|
||||
|
||||
import scala.meta.Dialect;
|
||||
import scala.meta.Source;
|
||||
@ -24,7 +27,7 @@ import scala.meta.internal.parsers.ScalametaParser;
|
||||
* Scalameta. This parser then wraps all of ScalaMeta's Nodes in Java versions
|
||||
* for compatibility.
|
||||
*/
|
||||
public class ScalaParser extends AbstractParser {
|
||||
public final class ScalaParser extends AbstractParser {
|
||||
private final Dialect dialect;
|
||||
|
||||
/**
|
@ -2,7 +2,11 @@
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.scala;
|
||||
/*
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.scala.ast;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
@ -10,136 +14,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Stack;
|
||||
|
||||
import net.sourceforge.pmd.annotation.InternalApi;
|
||||
import net.sourceforge.pmd.lang.ast.Node;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTCase;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTCtorPrimary;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTCtorSecondary;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDeclDef;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDeclType;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDeclVal;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDeclVar;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnClass;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnDef;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnMacro;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnObject;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnTrait;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnType;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnVal;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTDefnVar;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTEnumeratorGenerator;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTEnumeratorGuard;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTEnumeratorVal;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTImport;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTImporteeName;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTImporteeRename;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTImporteeUnimport;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTImporteeWildcard;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTImporter;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTInit;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitBoolean;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitByte;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitChar;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitDouble;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitFloat;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitInt;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitLong;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitNull;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitShort;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitString;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitSymbol;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTLitUnit;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModAbstract;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModAnnot;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModCase;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModContravariant;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModCovariant;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModFinal;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModImplicit;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModInline;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModLazy;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModOverride;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModPrivate;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModProtected;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModSealed;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModValParam;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTModVarParam;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTNameAnonymous;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTNameIndeterminate;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatAlternative;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatBind;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatExtract;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatExtractInfix;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatInterpolate;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatSeqWildcard;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatTuple;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatTyped;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatVar;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatWildcard;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPatXml;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPkg;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTPkgObject;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTQuasi;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTSelf;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTSource;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTemplate;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermAnnotate;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermApply;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermApplyInfix;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermApplyType;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermApplyUnary;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermAscribe;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermAssign;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermBlock;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermDo;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermEta;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermFor;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermForYield;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermFunction;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermIf;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermInterpolate;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermMatch;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermName;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermNew;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermNewAnonymous;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermParam;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermPartialFunction;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermPlaceholder;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermRepeated;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermReturn;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermSelect;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermSuper;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermThis;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermThrow;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermTry;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermTryWithHandler;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermTuple;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermWhile;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTermXml;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeAnd;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeAnnotate;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeApply;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeApplyInfix;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeBounds;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeByName;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeExistential;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeFunction;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeImplicitFunction;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeLambda;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeMethod;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeName;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeOr;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeParam;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypePlaceholder;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeProject;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeRefine;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeRepeated;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeSelect;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeSingleton;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeTuple;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeVar;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ASTTypeWith;
|
||||
import net.sourceforge.pmd.lang.scala.ast.ScalaNode;
|
||||
|
||||
import scala.meta.Case;
|
||||
import scala.meta.Ctor;
|
||||
@ -167,7 +42,6 @@ import scala.meta.Type;
|
||||
* Translates Scala's AST to a PMD-compatible AST.
|
||||
*
|
||||
*/
|
||||
@InternalApi
|
||||
class ScalaTreeBuilder {
|
||||
|
||||
private static final Map<Class<? extends Tree>, Constructor<? extends ScalaNode<?>>> NODE_TYPE_TO_NODE_ADAPTER_TYPE = new HashMap<>();
|
||||
@ -303,12 +177,12 @@ class ScalaTreeBuilder {
|
||||
}
|
||||
|
||||
// The nodes having children built.
|
||||
private Stack<Node> nodes = new Stack<>();
|
||||
private final Stack<Node> nodes = new Stack<>();
|
||||
|
||||
private static <T extends Tree> void register(Class<T> nodeType,
|
||||
Class<? extends ScalaNode<T>> nodeAdapterType) {
|
||||
try {
|
||||
NODE_TYPE_TO_NODE_ADAPTER_TYPE.put(nodeType, nodeAdapterType.getConstructor(nodeType));
|
||||
NODE_TYPE_TO_NODE_ADAPTER_TYPE.put(nodeType, nodeAdapterType.getDeclaredConstructor(nodeType));
|
||||
} catch (SecurityException | NoSuchMethodException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -327,8 +201,7 @@ class ScalaTreeBuilder {
|
||||
// translation between Scala Traits and Java Classes
|
||||
for (Class<?> treeClass : NODE_TYPE_TO_NODE_ADAPTER_TYPE.keySet()) {
|
||||
if (treeClass.isInstance(node)) {
|
||||
constructor = (Constructor<? extends ScalaNode<T>>) NODE_TYPE_TO_NODE_ADAPTER_TYPE
|
||||
.get(treeClass);
|
||||
constructor = (Constructor<? extends ScalaNode<T>>) NODE_TYPE_TO_NODE_ADAPTER_TYPE.get(treeClass);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user