diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index 0799c370..5e4e1ebd 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,4 +1,3 @@ -Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml Token.cpp ERROR: Location Id was not referenced by this Token. Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class Edge.cpp ERROR: Nodes are not plain copies. diff --git a/java_indexer/src/io/coati/JavaAstVisitor.java b/java_indexer/src/io/coati/JavaAstVisitor.java index 31b738ab..8657a568 100644 --- a/java_indexer/src/io/coati/JavaAstVisitor.java +++ b/java_indexer/src/io/coati/JavaAstVisitor.java @@ -239,35 +239,46 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter if (!ancestors.isEmpty()) { + boolean parametersResolved = true; List parameterTypes = new ArrayList<>(); - for (Parameter parameter: overrider.getParameters()) + try { - Type parameterType = parameter.getType(); - parameterTypes.add(JavaParserFacade.get(m_typeSolver).convert(parameterType, parameterType)); + for (Parameter parameter: overrider.getParameters()) + { + Type parameterType = parameter.getType(); + parameterTypes.add(JavaParserFacade.get(m_typeSolver).convert(parameterType, parameterType)); + } + } + catch (UnsolvedSymbolException e) + { + parametersResolved = false; } - for (ClassOrInterfaceType ancestor: ancestors) + if (parametersResolved) { - try + for (ClassOrInterfaceType ancestor: ancestors) { - TypeUsage ancestorTypeUsage = JavaParserFacade.get(m_typeSolver).convert(ancestor, ancestor); - if (ancestorTypeUsage.isReferenceType()) + try { - SymbolReference solvedMethod = ancestorTypeUsage.asReferenceTypeUsage().solveMethod(overrider.getName(), parameterTypes); - if (solvedMethod.isSolved()) + TypeUsage ancestorTypeUsage = JavaParserFacade.get(m_typeSolver).convert(ancestor, ancestor); + if (ancestorTypeUsage.isReferenceType()) { - return solvedMethod.getCorrespondingDeclaration(); + SymbolReference solvedMethod = ancestorTypeUsage.asReferenceTypeUsage().solveMethod(overrider.getName(), parameterTypes); + if (solvedMethod.isSolved()) + { + return solvedMethod.getCorrespondingDeclaration(); + } } } - } - catch (UnsolvedSymbolException e) - { - // nothing to do here, just try to solve in the next ancestor - } - catch (Exception e) - { - // hmm, maybe we should handle these cases. soon.. - // don't do anything for parse exceptions. they are displayed as errors anyways. + catch (UnsolvedSymbolException e) + { + // nothing to do here, just try to solve in the next ancestor + } + catch (Exception e) + { + // hmm, maybe we should handle these cases. soon.. + // don't do anything for parse exceptions. they are displayed as errors anyways. + } } } }