From 228526d84c52f25abd222163f18c34af6fb9d7ed Mon Sep 17 00:00:00 2001 From: Federico Tomassetti Date: Mon, 23 Oct 2017 14:08:29 +0200 Subject: [PATCH] resolve compilation issues for supporting JP 3.5.0 --- .../symbolsolver/JavaSymbolSolver.java | 35 +++++++++++++------ .../DefaultVisitorAdapter.java | 5 +++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/JavaSymbolSolver.java b/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/JavaSymbolSolver.java index fcd083e0e5..14bf1aa88d 100644 --- a/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/JavaSymbolSolver.java +++ b/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/JavaSymbolSolver.java @@ -3,8 +3,11 @@ import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.Node; import com.github.javaparser.ast.body.MethodDeclaration; +import com.github.javaparser.ast.expr.Expression; import com.github.javaparser.ast.type.ArrayType; +import com.github.javaparser.ast.type.Type; import com.github.javaparser.resolution.SymbolResolver; +import com.github.javaparser.resolution.types.ResolvedType; import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserMethodDeclaration; import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; @@ -26,22 +29,34 @@ public JavaSymbolSolver(TypeSolver typeSolver) { this.typeSolver = typeSolver; } + /** + * Register this SymbolResolver into a CompilationUnit, so that symbol resolution becomes available to + * all nodes part of the CompilationUnit. + */ + public void inject(CompilationUnit destination) { + destination.setData(Node.SYMBOL_RESOLVER_KEY, this); + } + @Override - public T resolve(Node node, Class resultClass) { + public T resolveDeclaration(Node node, Class resultClass) { if (node instanceof MethodDeclaration) { return resultClass.cast(new JavaParserMethodDeclaration((MethodDeclaration)node, typeSolver)); } - if (node instanceof ArrayType) { - return resultClass.cast(JavaParserFacade.get(typeSolver).convert((ArrayType)node, node)); + throw new UnsupportedOperationException("Unable to find the declaration of type " + resultClass.getSimpleName() + + " from " + node.getClass().getSimpleName()); + } + + @Override + public T toResolvedType(Type javaparserType, Class resultClass) { + if (javaparserType instanceof ArrayType) { + return resultClass.cast(JavaParserFacade.get(typeSolver).convert((ArrayType)javaparserType, javaparserType)); } - throw new UnsupportedOperationException("Unable to resolve to " + resultClass.getSimpleName() + " from " + node.getClass().getSimpleName()); + throw new UnsupportedOperationException("Unable to get the resolved type of class " + + resultClass.getSimpleName() + " from " + javaparserType); } - /** - * Register this SymbolResolver into a CompilationUnit, so that symbol resolution becomes available to - * all nodes part of the CompilationUnit. - */ - public void inject(CompilationUnit destination) { - destination.setData(Node.SYMBOL_RESOLVER_KEY, this); + @Override + public ResolvedType calculateType(Expression expression) { + throw new UnsupportedOperationException("Unable to calculate type of " + expression); } } diff --git a/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/DefaultVisitorAdapter.java b/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/DefaultVisitorAdapter.java index 9a43745532..dc9d862419 100644 --- a/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/DefaultVisitorAdapter.java +++ b/java-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/DefaultVisitorAdapter.java @@ -462,4 +462,9 @@ public ResolvedType visit(ModuleOpensStmt node, Boolean arg) { public ResolvedType visit(UnparsableStmt node, Boolean arg) { throw new UnsupportedOperationException(node.getClass().getCanonicalName()); } + + @Override + public ResolvedType visit(ReceiverParameter node, Boolean arg) { + throw new UnsupportedOperationException(node.getClass().getCanonicalName()); + } }