From b9caf94b599d1986eb54c1656bd0304bb2927283 Mon Sep 17 00:00:00 2001 From: Danny van Bruggen Date: Fri, 1 Feb 2019 23:05:21 +0100 Subject: [PATCH] Spring cleaning --- .../com/github/javaparser/JavadocParser.java | 2 +- .../UnicodeEscapeProcessingProvider.java | 2 +- .../javaparser/utils/CodeGenerationUtils.java | 3 + .../java/com/github/javaparser/utils/Log.java | 2 + .../com/github/javaparser/utils/Pair.java | 6 +- .../com/github/javaparser/utils/Utils.java | 4 +- .../symbolsolver/SourceFileInfoExtractor.java | 129 +++++++++--------- .../DefaultConstructorDeclaration.java | 2 +- .../JavassistClassDeclaration.java | 3 +- .../JavassistConstructorDeclaration.java | 9 +- .../JavassistEnumConstantDeclaration.java | 9 ++ .../JavassistEnumDeclaration.java | 8 ++ .../JavassistFieldDeclaration.java | 4 +- .../JavassistInterfaceDeclaration.java | 4 +- .../JavassistMethodDeclaration.java | 4 +- .../javassistmodel/JavassistUtils.java | 4 +- .../model/typesystem/ReferenceTypeImpl.java | 4 +- .../ReflectionConstructorDeclaration.java | 3 +- .../symbolsolver/resolution/SymbolSolver.java | 2 +- .../resolution/naming/NameCategory.java | 6 +- .../resolution/naming/NameLogic.java | 62 +++++---- .../resolution/AnalyseJavaParserTest.java | 15 +- .../AnalyseJavaSymbolSolver060Test.java | 56 ++++---- .../resolution/AnalyseNewJavaParserTest.java | 15 +- 24 files changed, 185 insertions(+), 173 deletions(-) diff --git a/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java b/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java index 90f52b00d5..d24cad4daa 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java +++ b/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java @@ -72,7 +72,7 @@ public static Javadoc parse(String commentContent) { //then needs to be added again so that the block parsers handles everything correctly. blockLines = BLOCK_PATTERN .splitAsStream(tagBlock) - .filter(STRING_NOT_EMPTY) + .filter(s1 -> !s1.isEmpty()) .map(s -> BLOCK_TAG_PREFIX + s) .collect(Collectors.toList()); } diff --git a/javaparser-core/src/main/java/com/github/javaparser/UnicodeEscapeProcessingProvider.java b/javaparser-core/src/main/java/com/github/javaparser/UnicodeEscapeProcessingProvider.java index 43dbce4678..89f9a18c6c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/UnicodeEscapeProcessingProvider.java +++ b/javaparser-core/src/main/java/com/github/javaparser/UnicodeEscapeProcessingProvider.java @@ -6,7 +6,7 @@ * An implementation of interface CharStream, where the stream is assumed to * contain only ASCII characters (with java-like unicode escape processing). */ -public class UnicodeEscapeProcessingProvider implements Provider { +class UnicodeEscapeProcessingProvider implements Provider { private static int hexval(char c) throws java.io.IOException { switch (c) { case '0': diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/CodeGenerationUtils.java b/javaparser-core/src/main/java/com/github/javaparser/utils/CodeGenerationUtils.java index 24085e8336..da429890d2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/utils/CodeGenerationUtils.java +++ b/javaparser-core/src/main/java/com/github/javaparser/utils/CodeGenerationUtils.java @@ -8,6 +8,9 @@ import static com.github.javaparser.utils.Utils.capitalize; import static com.github.javaparser.utils.Utils.decapitalize; +/** + * Utilities that can be useful when generating code. + */ public final class CodeGenerationUtils { private CodeGenerationUtils() { } diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/Log.java b/javaparser-core/src/main/java/com/github/javaparser/utils/Log.java index 12a9cdc85d..e3942728ba 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/utils/Log.java +++ b/javaparser-core/src/main/java/com/github/javaparser/utils/Log.java @@ -8,6 +8,8 @@ /** * To avoid dependencies on logging frameworks, we have invented yet another logging framework :-) + *

+ * See a blog about this */ public class Log { /** diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/Pair.java b/javaparser-core/src/main/java/com/github/javaparser/utils/Pair.java index 6f84a7ba22..c9933ccf8e 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/utils/Pair.java +++ b/javaparser-core/src/main/java/com/github/javaparser/utils/Pair.java @@ -21,6 +21,8 @@ package com.github.javaparser.utils; +import java.util.Objects; + import static com.github.javaparser.utils.CodeGenerationUtils.f; /** @@ -45,8 +47,8 @@ public boolean equals(Object o) { Pair pair = (Pair) o; - if (a != null ? !a.equals(pair.a) : pair.a != null) return false; - if (b != null ? !b.equals(pair.b) : pair.b != null) return false; + if (!Objects.equals(a, pair.a)) return false; + if (!Objects.equals(b, pair.b)) return false; return true; } diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java b/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java index fedb294594..300b4fd78d 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java +++ b/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.Reader; +import java.nio.file.Files; import java.util.*; import java.util.function.Predicate; import java.util.function.Function; @@ -37,11 +38,10 @@ public class Utils { public static final String EOL = System.getProperty("line.separator"); - public static final Predicate STRING_NOT_EMPTY = s -> !s.isEmpty(); - /** * @deprecated This is no longer in use by JavaParser, please write your own replacement. */ + @Deprecated public static List ensureNotNull(List list) { return list == null ? new ArrayList<>() : list; } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/SourceFileInfoExtractor.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/SourceFileInfoExtractor.java index 80d4867610..1f8573b880 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/SourceFileInfoExtractor.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/SourceFileInfoExtractor.java @@ -36,47 +36,49 @@ import com.github.javaparser.symbolsolver.model.resolution.SymbolReference; import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; -import java.io.File; import java.io.IOException; import java.io.PrintStream; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; import java.nio.file.Path; -import java.util.LinkedList; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.ArrayList; import java.util.List; import static com.github.javaparser.symbolsolver.javaparser.Navigator.requireParentNode; +import static java.util.Comparator.comparing; /** - * It prints information extracted from a source file. It is mainly intended as an example usage of JavaSymbolSolver. + * Resolves resolvable nodes from one or more source files, and reports the results. + * It is mainly intended as an example usage of JavaSymbolSolver. * * @author Federico Tomassetti */ public class SourceFileInfoExtractor { - private TypeSolver typeSolver; + private final TypeSolver typeSolver; - private int ok = 0; - private int ko = 0; + private int successes = 0; + private int failures = 0; private int unsupported = 0; private boolean printFileName = true; private PrintStream out = System.out; private PrintStream err = System.err; + private boolean verbose = false; + + public SourceFileInfoExtractor(TypeSolver typeSolver) { + this.typeSolver = typeSolver; + } public void setVerbose(boolean verbose) { this.verbose = verbose; } - private boolean verbose = false; - public void setPrintFileName(boolean printFileName) { this.printFileName = printFileName; } - public void clear() { - ok = 0; - ko = 0; - unsupported = 0; - } - public void setOut(PrintStream out) { this.out = out; } @@ -85,17 +87,16 @@ public void setErr(PrintStream err) { this.err = err; } - public int getOk() { - return ok; - + public int getSuccesses() { + return successes; } public int getUnsupported() { return unsupported; } - public int getKo() { - return ko; + public int getFailures() { + return failures; } private void solveTypeDecl(ClassOrInterfaceDeclaration node) { @@ -115,23 +116,27 @@ private void solve(Node node) { if (node instanceof ClassOrInterfaceDeclaration) { solveTypeDecl((ClassOrInterfaceDeclaration) node); } else if (node instanceof Expression) { - if ((requireParentNode(node) instanceof ImportDeclaration) || (requireParentNode(node) instanceof Expression) - || (requireParentNode(node) instanceof MethodDeclaration) - || (requireParentNode(node) instanceof PackageDeclaration)) { + Node parentNode = requireParentNode(node); + if (parentNode instanceof ImportDeclaration || + parentNode instanceof Expression || + parentNode instanceof MethodDeclaration || + parentNode instanceof PackageDeclaration) { // skip - } else if ((requireParentNode(node) instanceof Statement) || - (requireParentNode(node) instanceof VariableDeclarator) || - (requireParentNode(node) instanceof SwitchEntry)) { + return; + } + if (parentNode instanceof Statement || + parentNode instanceof VariableDeclarator || + parentNode instanceof SwitchEntry) { try { ResolvedType ref = JavaParserFacade.get(typeSolver).getType(node); - out.println(" Line " + node.getRange().get().begin.line + ") " + node + " ==> " + ref.describe()); - ok++; + out.println(" Line " + lineNr(node) + ") " + node + " ==> " + ref.describe()); + successes++; } catch (UnsupportedOperationException upe) { unsupported++; err.println(upe.getMessage()); throw upe; } catch (RuntimeException re) { - ko++; + failures++; err.println(re.getMessage()); throw re; } @@ -141,7 +146,7 @@ private void solve(Node node) { private void solveMethodCalls(Node node) { if (node instanceof MethodCallExpr) { - out.println(" Line " + node.getBegin().get().line + ") " + node + " ==> " + toString((MethodCallExpr) node)); + out.println(" Line " + lineNr(node) + ") " + node + " ==> " + toString((MethodCallExpr) node)); } for (Node child : node.getChildNodes()) { solveMethodCalls(child); @@ -153,7 +158,7 @@ private String toString(MethodCallExpr node) { return toString(JavaParserFacade.get(typeSolver).solve(node)); } catch (Exception e) { if (verbose) { - System.err.println("Error resolving call at L" + node.getBegin().get().line + ": " + node); + System.err.println("Error resolving call at L" + lineNr(node) + ": " + node); e.printStackTrace(); } return "ERROR"; @@ -169,54 +174,46 @@ private String toString(SymbolReference methodDeclara } private List collectAllNodes(Node node) { - List nodes = new LinkedList<>(); - collectAllNodes(node, nodes); - nodes.sort((n1, n2) -> n1.getBegin().get().compareTo(n2.getBegin().get())); + List nodes = new ArrayList<>(); + node.walk(nodes::add); + nodes.sort(comparing(n -> n.getBegin().get())); return nodes; } - private void collectAllNodes(Node node, List nodes) { - nodes.add(node); - node.getChildNodes().forEach(c -> collectAllNodes(c, nodes)); - } - public void solve(Path path) throws IOException { - File file = path.toFile(); - if (file.isDirectory()) { - for (File f : file.listFiles()) { - solve(f.toPath()); - } - } else { - if (file.getName().endsWith(".java")) { - if (printFileName) { - out.println("- parsing " + file.getAbsolutePath()); + Files.walkFileTree(path, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + if (file.toString().endsWith(".java")) { + if (printFileName) { + out.println("- parsing " + file.toAbsolutePath()); + } + CompilationUnit cu = JavaParser.parse(file); + List nodes = collectAllNodes(cu); + nodes.forEach(n -> solve(n)); } - CompilationUnit cu = JavaParser.parse(file); - List nodes = collectAllNodes(cu); - nodes.forEach(n -> solve(n)); + return FileVisitResult.CONTINUE; } - } + }); } public void solveMethodCalls(Path path) throws IOException { - File file = path.toFile(); - if (file.isDirectory()) { - for (File f : file.listFiles()) { - solveMethodCalls(f.toPath()); - } - } else { - if (file.getName().endsWith(".java")) { - if (printFileName) { - out.println("- parsing " + file.getAbsolutePath()); + Files.walkFileTree(path, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + if (file.toString().endsWith(".java")) { + if (printFileName) { + out.println("- parsing " + file.toAbsolutePath()); + } + CompilationUnit cu = JavaParser.parse(file); + solveMethodCalls(cu); } - CompilationUnit cu = JavaParser.parse(file); - solveMethodCalls(cu); + return FileVisitResult.CONTINUE; } - } + }); } - public void setTypeSolver(TypeSolver typeSolver) { - this.typeSolver = typeSolver; + private int lineNr(Node node) { + return node.getRange().map(range -> range.begin.line).orElseThrow(IllegalStateException::new); } - } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/DefaultConstructorDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/DefaultConstructorDeclaration.java index 470f840a04..03fbcbba0b 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/DefaultConstructorDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/DefaultConstructorDeclaration.java @@ -51,7 +51,7 @@ public int getNumberOfParams() { @Override public ResolvedParameterDeclaration getParam(int i) { - throw new UnsupportedOperationException("The default constructor has not parameters"); + throw new UnsupportedOperationException("The default constructor has no parameters"); } @Override diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistClassDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistClassDeclaration.java index 5a08c8abad..2d1fcee9ca 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistClassDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistClassDeclaration.java @@ -110,7 +110,7 @@ public String getPackageName() { public String getClassName() { String className = ctClass.getName().replace('$', '.'); if (getPackageName() != null) { - return className.substring(getPackageName().length() + 1, className.length()); + return className.substring(getPackageName().length() + 1); } return className; } @@ -120,6 +120,7 @@ public String getQualifiedName() { return ctClass.getName().replace('$', '.'); } + @Deprecated public Optional solveMethodAsUsage(String name, List argumentsTypes, Context invokationContext, List typeParameterValues) { return JavassistUtils.getMethodUsage(ctClass, name, argumentsTypes, typeSolver, invokationContext); diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistConstructorDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistConstructorDeclaration.java index fe756d761f..972bf161ba 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistConstructorDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistConstructorDeclaration.java @@ -35,8 +35,8 @@ * @author Fred Lefévère-Laoide */ public class JavassistConstructorDeclaration implements ResolvedConstructorDeclaration { - private CtConstructor ctConstructor; - private TypeSolver typeSolver; + private final CtConstructor ctConstructor; + private final TypeSolver typeSolver; public JavassistConstructorDeclaration(CtConstructor ctConstructor, TypeSolver typeSolver) { this.ctConstructor = ctConstructor; @@ -45,8 +45,9 @@ public JavassistConstructorDeclaration(CtConstructor ctConstructor, TypeSolver t @Override public String toString() { - return "JavassistMethodDeclaration{" + - "CtConstructor=" + ctConstructor + + return getClass().getSimpleName() + "{" + + "ctConstructor=" + ctConstructor.getName() + + ", typeSolver=" + typeSolver + '}'; } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumConstantDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumConstantDeclaration.java index f3b6e70a76..0ac6bef9db 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumConstantDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumConstantDeclaration.java @@ -59,4 +59,13 @@ public ResolvedType getType() { } return type; } + + @Override + public String toString() { + return getClass().getSimpleName() + "{" + + "ctField=" + ctField.getName() + + ", typeSolver=" + typeSolver + + '}'; + } + } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumDeclaration.java index 8926936e9c..4875848774 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistEnumDeclaration.java @@ -282,4 +282,12 @@ public List getEnumConstants() { public List getConstructors() { return javassistTypeDeclarationAdapter.getConstructors(); } + + @Override + public String toString() { + return getClass().getSimpleName() + "{" + + "ctClass=" + ctClass.getName() + + ", typeSolver=" + typeSolver + + '}'; + } } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistFieldDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistFieldDeclaration.java index f390072cc0..f3fc25c910 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistFieldDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistFieldDeclaration.java @@ -49,9 +49,7 @@ public ResolvedType getType() { } else { return JavassistFactory.typeUsageFor(ctField.getType(), typeSolver); } - } catch (NotFoundException e) { - throw new RuntimeException(e); - } catch (BadBytecode e) { + } catch (NotFoundException | BadBytecode e) { throw new RuntimeException(e); } } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistInterfaceDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistInterfaceDeclaration.java index 5807eb486c..9692423d80 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistInterfaceDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistInterfaceDeclaration.java @@ -85,7 +85,7 @@ public String getPackageName() { public String getClassName() { String className = ctClass.getName().replace('$', '.'); if (getPackageName() != null) { - return className.substring(getPackageName().length() + 1, className.length()); + return className.substring(getPackageName().length() + 1); } return className; } @@ -174,7 +174,7 @@ public List getAncestors(boolean acceptIncompleteList) { } catch (NotFoundException e) { throw new RuntimeException(e); } - ancestors = ancestors.stream().filter(a -> a.getQualifiedName() != Object.class.getCanonicalName()) + ancestors = ancestors.stream().filter(a -> !a.getQualifiedName().equals(Object.class.getCanonicalName())) .collect(Collectors.toList()); ancestors.add(new ReferenceTypeImpl(typeSolver.solveType(Object.class.getCanonicalName()), typeSolver)); return ancestors; diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistMethodDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistMethodDeclaration.java index 93ec86cebf..573a2156d9 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistMethodDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistMethodDeclaration.java @@ -141,10 +141,8 @@ public ResolvedParameterDeclaration getParam(int i) { return new JavassistParameterDeclaration(ctMethod.getParameterTypes()[i], typeSolver, variadic, paramName.orElse(null)); } - } catch (NotFoundException e) { + } catch (NotFoundException | BadBytecode e) { throw new RuntimeException(e); - } catch (BadBytecode badBytecode) { - throw new RuntimeException(badBytecode); } } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistUtils.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistUtils.java index 9abe5ad89a..7b5bb7dd39 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistUtils.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javassistmodel/JavassistUtils.java @@ -68,7 +68,7 @@ static Optional getMethodUsage(CtClass ctClass, String name, List ref = new JavassistClassDeclaration(superClass, typeSolver).solveMethodAsUsage(name, argumentsTypes, invokationContext, null); + Optional ref = JavassistUtils.getMethodUsage(superClass, name, argumentsTypes, typeSolver, invokationContext); if (ref.isPresent()) { return ref; } @@ -79,7 +79,7 @@ static Optional getMethodUsage(CtClass ctClass, String name, List ref = new JavassistInterfaceDeclaration(interfaze, typeSolver).solveMethodAsUsage(name, argumentsTypes, invokationContext, null); + Optional ref = JavassistUtils.getMethodUsage(interfaze, name, argumentsTypes, typeSolver, invokationContext); if (ref.isPresent()) { return ref; } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/ReferenceTypeImpl.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/ReferenceTypeImpl.java index 20c32b640e..41a4ae6e3d 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/ReferenceTypeImpl.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/model/typesystem/ReferenceTypeImpl.java @@ -232,8 +232,6 @@ public ResolvedReferenceType deriveTypeParameters(ResolvedTypeParametersMap type @Override public Set getDeclaredFields() { - Set res = new HashSet<>(); - res.addAll(getTypeDeclaration().getDeclaredFields()); - return res; + return new HashSet<>(getTypeDeclaration().getDeclaredFields()); } } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/reflectionmodel/ReflectionConstructorDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/reflectionmodel/ReflectionConstructorDeclaration.java index 0fb06754c5..52db2f9cda 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/reflectionmodel/ReflectionConstructorDeclaration.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/reflectionmodel/ReflectionConstructorDeclaration.java @@ -39,8 +39,7 @@ public class ReflectionConstructorDeclaration implements ResolvedConstructorDecl private Constructor constructor; private TypeSolver typeSolver; - public ReflectionConstructorDeclaration(Constructor constructor, - TypeSolver typeSolver) { + public ReflectionConstructorDeclaration(Constructor constructor, TypeSolver typeSolver) { this.constructor = constructor; this.typeSolver = typeSolver; } diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/SymbolSolver.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/SymbolSolver.java index 0e37c0205c..b8f9160228 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/SymbolSolver.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/SymbolSolver.java @@ -158,7 +158,7 @@ public SymbolReference solveSymbolInType(Res /** * Try to solve a symbol just in the declaration, it does not delegate to the container. * - * Similarly to solveType this should eventually disappear as the symbol resolution logic should be more general + * @deprecated Similarly to solveType this should eventually disappear as the symbol resolution logic should be more general * and do not be specific to JavaParser classes like in this case. */ @Deprecated diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameCategory.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameCategory.java index 301ce5bff2..2847d4096f 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameCategory.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameCategory.java @@ -53,11 +53,7 @@ public boolean isNeedingDisambiguation() { * Is the given name acceptable for the given category? */ public boolean isNameAcceptable(String name) { - if (this == TYPE_NAME && name.equals("var")) { - return false; - } else { - return true; - } + return this != TYPE_NAME || !name.equals("var"); } public boolean isValid() { diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameLogic.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameLogic.java index bd0fa7e989..44db49b74d 100644 --- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameLogic.java +++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/naming/NameLogic.java @@ -50,23 +50,25 @@ public static boolean isQualifiedName(Node node) { /** * Does the Node represent a Name? - * + *

* Note that while most specific AST classes either always represent names or never represent names * there are exceptions as the FieldAccessExpr */ public static boolean isAName(Node node) { if (node instanceof FieldAccessExpr) { - FieldAccessExpr fieldAccessExpr = (FieldAccessExpr)node; + FieldAccessExpr fieldAccessExpr = (FieldAccessExpr) node; return isAName(fieldAccessExpr.getScope()); } else { - return node instanceof SimpleName || node instanceof Name - || node instanceof ClassOrInterfaceType || node instanceof NameExpr; + return node instanceof SimpleName || + node instanceof Name || + node instanceof ClassOrInterfaceType || + node instanceof NameExpr; } } private static Node getQualifier(Node node) { if (node instanceof FieldAccessExpr) { - FieldAccessExpr fieldAccessExpr = (FieldAccessExpr)node; + FieldAccessExpr fieldAccessExpr = (FieldAccessExpr) node; return fieldAccessExpr.getScope(); } throw new UnsupportedOperationException(node.getClass().getCanonicalName()); @@ -74,7 +76,7 @@ private static Node getQualifier(Node node) { private static Node getRightMostName(Node node) { if (node instanceof FieldAccessExpr) { - FieldAccessExpr fieldAccessExpr = (FieldAccessExpr)node; + FieldAccessExpr fieldAccessExpr = (FieldAccessExpr) node; return fieldAccessExpr.getName(); } throw new UnsupportedOperationException(node.getClass().getCanonicalName()); @@ -82,7 +84,7 @@ private static Node getRightMostName(Node node) { /** * What is the Role of the given name? Does it represent a Declaration or a Reference? - * + *

* This classification is purely syntactical, i.e., it does not require symbol resolution. For this reason in the * future this could be moved to the core module of JavaParser. */ @@ -276,7 +278,7 @@ public static NameRole classifyRole(Node name) { if (name.getParentNode().isPresent() && NameLogic.isAName(name.getParentNode().get())) { return classifyRole(name.getParentNode().get()); } - throw new UnsupportedOperationException("Unable to classify role of name contained in "+ name.getParentNode().get().getClass().getSimpleName()); + throw new UnsupportedOperationException("Unable to classify role of name contained in " + name.getParentNode().get().getClass().getSimpleName()); } public static NameCategory classifyReference(Node name, TypeSolver typeSolver) { @@ -362,7 +364,7 @@ private static NameCategory reclassificationOfContextuallyAmbiguosPackageOrTypeN } private static NameCategory reclassificationOfContextuallyAmbiguousQualifiedAmbiguousName(Node nameNode, - TypeSolver typeSolver) { + TypeSolver typeSolver) { // If the AmbiguousName is a qualified name, consisting of a name, a ".", and an Identifier, then the name to // the left of the "." is first reclassified, for it is itself an AmbiguousName. There is then a choice: @@ -474,7 +476,7 @@ private static NameCategory reclassificationOfContextuallyAmbiguousSimpleAmbiguo /** * See JLS 6.5.1 Syntactic Classification of a Name According to Context. - * + *

* Most users do not want to call directly this method but call classifyReference instead. */ public static NameCategory syntacticClassificationAccordingToContext(Node name) { @@ -652,13 +654,13 @@ private static boolean isSyntacticallyATypeName(Node name) { // 3. To the left of the . in a single-static-import declaration (§7.5.3) if (whenParentIs(Name.class, name, (largerName, c) -> - whenParentIs(ImportDeclaration.class, largerName, (importDecl, c2) -> - importDecl.isStatic() && !importDecl.isAsterisk() && importDecl.getName() == c2) + whenParentIs(ImportDeclaration.class, largerName, (importDecl, c2) -> + importDecl.isStatic() && !importDecl.isAsterisk() && importDecl.getName() == c2) )) { return true; } if (whenParentIs(ImportDeclaration.class, name, (importDecl, c2) -> - importDecl.isStatic() && !importDecl.isAsterisk() && importDecl.getName() == c2)) { + importDecl.isStatic() && !importDecl.isAsterisk() && importDecl.getName() == c2)) { return true; } @@ -696,7 +698,7 @@ private static boolean isSyntacticallyATypeName(Node name) { return true; } if (whenParentIs(ThisExpr.class, name, (ne, c2) -> - ne.getClassExpr().isPresent() && ne.getClassExpr().get() == c2)) { + ne.getClassExpr().isPresent() && ne.getClassExpr().get() == c2)) { return true; } @@ -709,7 +711,7 @@ private static boolean isSyntacticallyATypeName(Node name) { return true; } if (whenParentIs(SuperExpr.class, name, (ne, c2) -> - ne.getClassExpr().isPresent() && ne.getClassExpr().get() == c2)) { + ne.getClassExpr().isPresent() && ne.getClassExpr().get() == c2)) { return true; } @@ -759,7 +761,7 @@ private static boolean isSyntacticallyATypeName(Node name) { if (whenParentIs(VariableDeclarator.class, name, (p1, c1) -> p1.getType() == c1 && whenParentIs(FieldDeclaration.class, p1, (p2, c2) -> - p2.getVariables().contains(c2)))) { + p2.getVariables().contains(c2)))) { return true; } @@ -865,7 +867,7 @@ private static boolean isSyntacticallyAnExpressionName(Node name) { return true; } if (whenParentIs(ExplicitConstructorInvocationStmt.class, name, (ne, c2) -> - ne.getExpression().isPresent() && ne.getExpression().get() == c2)) { + ne.getExpression().isPresent() && ne.getExpression().get() == c2)) { return true; } @@ -878,7 +880,7 @@ private static boolean isSyntacticallyAnExpressionName(Node name) { return true; } if (whenParentIs(ObjectCreationExpr.class, name, (ne, c2) -> - ne.getScope().isPresent() && ne.getScope().get() == c2)) { + ne.getScope().isPresent() && ne.getScope().get() == c2)) { return true; } @@ -891,7 +893,7 @@ private static boolean isSyntacticallyAnExpressionName(Node name) { return true; } if (whenParentIs(ArrayAccessExpr.class, name, (ne, c2) -> - ne.getName() == c2)) { + ne.getName() == c2)) { return true; } @@ -904,8 +906,8 @@ private static boolean isSyntacticallyAnExpressionName(Node name) { return true; } if (whenParentIs(UnaryExpr.class, name, (ne, c2) -> - ne.getExpression() == c2 && ne.isPostfix())) { - return true; + ne.getExpression() == c2 && ne.isPostfix())) { + return true; } // 5. As the left-hand operand of an assignment operator (§15.26) @@ -917,7 +919,7 @@ private static boolean isSyntacticallyAnExpressionName(Node name) { return true; } if (whenParentIs(AssignExpr.class, name, (ne, c2) -> - ne.getTarget() == c2)) { + ne.getTarget() == c2)) { return true; } @@ -940,15 +942,15 @@ private static boolean isSyntacticallyAnExpressionName(Node name) { return true; } if (whenParentIs(TryStmt.class, name, (ne, c2) -> - ne.getResources().contains(c2))) { + ne.getResources().contains(c2))) { return true; } if (whenParentIs(VariableDeclarator.class, name, (p2, c2) -> - p2.getInitializer().isPresent() && p2.getInitializer().get() == c2 && whenParentIs(VariableDeclarationExpr.class, p2, (p3, c3) -> - p3.getVariables().contains(c3) && whenParentIs(TryStmt.class, p3, (p4, c4) -> - p4.getResources().contains(c4) - ) - ))) { + p2.getInitializer().isPresent() && p2.getInitializer().get() == c2 && whenParentIs(VariableDeclarationExpr.class, p2, (p3, c3) -> + p3.getVariables().contains(c3) && whenParentIs(TryStmt.class, p3, (p4, c4) -> + p4.getResources().contains(c4) + ) + ))) { return true; } @@ -963,7 +965,7 @@ public static String nameAsString(Node name) { throw new IllegalArgumentException("A name was expected"); } if (name instanceof Name) { - return ((Name)name).asString(); + return ((Name) name).asString(); } else if (name instanceof SimpleName) { return ((SimpleName) name).getIdentifier(); } else if (name instanceof ClassOrInterfaceType) { @@ -976,7 +978,7 @@ public static String nameAsString(Node name) { throw new IllegalArgumentException(); } } else if (name instanceof NameExpr) { - return ((NameExpr)name).getNameAsString(); + return ((NameExpr) name).getNameAsString(); } else { throw new UnsupportedOperationException("Unknown type of name found: " + name + " (" + name.getClass().getCanonicalName() + ")"); diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaParserTest.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaParserTest.java index 2ea715088b..3cf17fa6d2 100644 --- a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaParserTest.java +++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaParserTest.java @@ -40,12 +40,11 @@ class AnalyseJavaParserTest extends AbstractSymbolResolutionTest { private static final Path properSrc = root.resolve("proper_source"); private SourceFileInfoExtractor getSourceFileInfoExtractor() { - CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver(); - combinedTypeSolver.add(new ReflectionTypeSolver()); - combinedTypeSolver.add(new JavaParserTypeSolver(properSrc, new LeanParserConfiguration())); - combinedTypeSolver.add(new JavaParserTypeSolver(root.resolve("generated"), new LeanParserConfiguration())); - SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(); - sourceFileInfoExtractor.setTypeSolver(combinedTypeSolver); + CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver( + new ReflectionTypeSolver(), + new JavaParserTypeSolver(properSrc, new LeanParserConfiguration()), + new JavaParserTypeSolver(root.resolve("generated"), new LeanParserConfiguration())); + SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(combinedTypeSolver); sourceFileInfoExtractor.setPrintFileName(false); return sourceFileInfoExtractor; } @@ -72,11 +71,11 @@ private void parse(String fileName) throws IOException { String path = "expected_output/" + fileName.replaceAll("/", "_") + ".txt"; Path dstFile = adaptPath(root.resolve(path)); - if (DEBUG && (sourceFileInfoExtractor.getKo() != 0 || sourceFileInfoExtractor.getUnsupported() != 0)) { + if (DEBUG && (sourceFileInfoExtractor.getFailures() != 0 || sourceFileInfoExtractor.getUnsupported() != 0)) { System.err.println(output); } - assertEquals(0, sourceFileInfoExtractor.getKo(), "No failures expected when analyzing " + path); + assertEquals(0, sourceFileInfoExtractor.getFailures(), "No failures expected when analyzing " + path); assertEquals(0, sourceFileInfoExtractor.getUnsupported(), "No UnsupportedOperationException expected when analyzing " + path); String expected = readFile(dstFile); diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaSymbolSolver060Test.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaSymbolSolver060Test.java index 6401dd3d65..78e6b15e99 100644 --- a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaSymbolSolver060Test.java +++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseJavaSymbolSolver060Test.java @@ -23,7 +23,6 @@ import com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.io.*; @@ -33,6 +32,7 @@ import java.nio.file.Paths; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; /** * We analyze JavaParser version 0.6.0. @@ -46,24 +46,24 @@ class AnalyseJavaSymbolSolver060Test extends AbstractResolutionTest { private static final Path expectedOutput = root.resolve("expected_output"); private static SourceFileInfoExtractor getSourceFileInfoExtractor() { - CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver(); - combinedTypeSolver.add(new ReflectionTypeSolver()); - combinedTypeSolver.add(new JavaParserTypeSolver(new File(src + "/java-symbol-solver-core"))); - combinedTypeSolver.add(new JavaParserTypeSolver(new File(src + "/java-symbol-solver-logic"))); - combinedTypeSolver.add(new JavaParserTypeSolver(new File(src + "/java-symbol-solver-model"))); try { - combinedTypeSolver.add(new JarTypeSolver(lib + "/guava-21.0.jar")); - combinedTypeSolver.add(new JarTypeSolver(lib + "/javaparser-core-3.3.0.jar")); - combinedTypeSolver.add(new JarTypeSolver(lib + "/javaslang-2.0.3.jar")); - combinedTypeSolver.add(new JarTypeSolver(lib + "/javassist-3.19.0-GA.jar")); - } catch (IOException e) { - Assertions.fail("one or more jar dependencies could not be found."); - } - SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(); - sourceFileInfoExtractor.setTypeSolver(combinedTypeSolver); - sourceFileInfoExtractor.setPrintFileName(false); - sourceFileInfoExtractor.setVerbose(true); - return sourceFileInfoExtractor; + CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver( + new ReflectionTypeSolver(), + new JavaParserTypeSolver(new File(src + "/java-symbol-solver-core")), + new JavaParserTypeSolver(new File(src + "/java-symbol-solver-logic")), + new JavaParserTypeSolver(new File(src + "/java-symbol-solver-model")), + new JarTypeSolver(lib + "/guava-21.0.jar"), + new JarTypeSolver(lib + "/javaparser-core-3.3.0.jar"), + new JarTypeSolver(lib + "/javaslang-2.0.3.jar"), + new JarTypeSolver(lib + "/javassist-3.19.0-GA.jar")); + SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(combinedTypeSolver); + sourceFileInfoExtractor.setPrintFileName(false); + sourceFileInfoExtractor.setVerbose(true); + return sourceFileInfoExtractor; + } catch (IOException e) { + fail("one or more jar dependencies could not be found."); + return null; + } } private static SourceFileInfoExtractor sourceFileInfoExtractor = getSourceFileInfoExtractor(); @@ -91,7 +91,7 @@ private void parse(String projectName, String fileName) throws IOException { String output = outErrStream.toString(); String path = adaptPath(expectedOutput) + "/" + projectName + "/" + fileName.replaceAll("/", "_") + ".txt"; - File dstFile = new File(path); + File dstFile = new File(path); if (isJavaVersion9OrAbove()) { String path9 = adaptPath(expectedOutput) + "/" + projectName + "/" + fileName.replaceAll("/", "_") + "_J9.txt"; @@ -102,11 +102,11 @@ private void parse(String projectName, String fileName) throws IOException { } } - if (DEBUG && (sourceFileInfoExtractor.getKo() != 0 || sourceFileInfoExtractor.getUnsupported() != 0)) { + if (DEBUG && (sourceFileInfoExtractor.getFailures() != 0 || sourceFileInfoExtractor.getUnsupported() != 0)) { System.err.println(output); } - assertEquals(0, sourceFileInfoExtractor.getKo(), "No failures expected when analyzing " + path); + assertEquals(0, sourceFileInfoExtractor.getFailures(), "No failures expected when analyzing " + path); assertEquals(0, sourceFileInfoExtractor.getUnsupported(), "No UnsupportedOperationException expected when analyzing " + path); // If we need to update the file uncomment these lines @@ -300,13 +300,13 @@ void parseCoreResolutionTypesolvers() throws IOException { @Test void parseLogic() throws IOException { - parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/AbstractClassDeclaration"); - parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/AbstractTypeDeclaration"); - parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/ConfilictingGenericTypesException"); - parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/FunctionalInterfaceLogic"); - parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/InferenceContext"); - parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/InferenceVariableType"); - parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/ObjectProvider"); + parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/AbstractClassDeclaration"); + parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/AbstractTypeDeclaration"); + parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/ConfilictingGenericTypesException"); + parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/FunctionalInterfaceLogic"); + parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/InferenceContext"); + parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/InferenceVariableType"); + parse("java-symbol-solver-logic", "com/github/javaparser/symbolsolver/logic/ObjectProvider"); } @Test diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseNewJavaParserTest.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseNewJavaParserTest.java index 66ea3a90fb..8cfedbde7e 100644 --- a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseNewJavaParserTest.java +++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/AnalyseNewJavaParserTest.java @@ -42,12 +42,11 @@ class AnalyseNewJavaParserTest extends AbstractResolutionTest { private static final Path src = adaptPath("src/test/test_sourcecode/javaparser_new_src/javaparser-core"); private static SourceFileInfoExtractor getSourceFileInfoExtractor() { - CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver(); - combinedTypeSolver.add(new ReflectionTypeSolver()); - combinedTypeSolver.add(new JavaParserTypeSolver(src, new LeanParserConfiguration())); - combinedTypeSolver.add(new JavaParserTypeSolver(root.resolve("javaparser-generated-sources"), new LeanParserConfiguration())); - SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(); - sourceFileInfoExtractor.setTypeSolver(combinedTypeSolver); + CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver( + new ReflectionTypeSolver(), + new JavaParserTypeSolver(src, new LeanParserConfiguration()), + new JavaParserTypeSolver(root.resolve("javaparser-generated-sources"), new LeanParserConfiguration())); + SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(combinedTypeSolver); sourceFileInfoExtractor.setPrintFileName(false); sourceFileInfoExtractor.setVerbose(true); return sourceFileInfoExtractor; @@ -86,11 +85,11 @@ private void parse(String fileName) throws IOException { } } - if (DEBUG && (sourceFileInfoExtractor.getKo() != 0 || sourceFileInfoExtractor.getUnsupported() != 0)) { + if (DEBUG && (sourceFileInfoExtractor.getFailures() != 0 || sourceFileInfoExtractor.getUnsupported() != 0)) { System.err.println(output); } - assertEquals(0, sourceFileInfoExtractor.getKo(), "No failures expected when analyzing " + path); + assertEquals(0, sourceFileInfoExtractor.getFailures(), "No failures expected when analyzing " + path); assertEquals(0, sourceFileInfoExtractor.getUnsupported(), "No UnsupportedOperationException expected when analyzing " + path); if (!Files.exists(dstFile)) {