data: removed java import errors

* removed error recording when import not found because of false positives
This commit is contained in:
malte_langkabel
2016-08-23 15:58:22 +02:00
parent a1277a92f4
commit 0ad7585811
2 changed files with 111 additions and 0 deletions
@@ -19,6 +19,7 @@ import com.github.javaparser.ast.comments.LineComment;
import com.github.javaparser.ast.expr.ArrayInitializerExpr;
import com.github.javaparser.ast.expr.MethodCallExpr;
import com.github.javaparser.ast.expr.NameExpr;
import com.github.javaparser.ast.expr.QualifiedNameExpr;
import com.github.javaparser.ast.expr.VariableDeclarationExpr;
import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.stmt.SwitchStmt;
@@ -32,6 +33,7 @@ import com.github.javaparser.ast.PackageDeclaration;
import com.github.javaparser.ast.TypeParameter;
import me.tomassetti.symbolsolver.javaparsermodel.JavaParserFacade;
import me.tomassetti.symbolsolver.javaparsermodel.JavaParserFactory;
import me.tomassetti.symbolsolver.javaparsermodel.UnsolvedSymbolException;
import me.tomassetti.symbolsolver.javaparsermodel.declarations.JavaParserMethodDeclaration;
import me.tomassetti.symbolsolver.javaparsermodel.declarations.JavaParserSymbolDeclaration;
@@ -388,6 +390,45 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
{
importedDeclName = JavaDeclNameResolver.getQualifiedDeclName(symbolReference.getCorrespondingDeclaration(), m_typeSolver);
}
/*
else
{
// TODO: handle import of static field or method
if (nameExpr instanceof QualifiedNameExpr)
{
String qName = nameExpr.toString();
int typeNameEndIndex = qName.lastIndexOf('.');
if (typeNameEndIndex != -1)
{
String typeName = qName.substring(0, typeNameEndIndex);
String memberName = qName.substring(typeNameEndIndex + 1);
me.tomassetti.symbolsolver.model.declarations.TypeDeclaration ref = m_typeSolver.solveType(typeName);
for (me.tomassetti.symbolsolver.model.declarations.MethodDeclaration methodDecl: ref.getDeclaredMethods()) // look for method
{
if (methodDecl.getName().equals(memberName))
{
System.out.println("methodDeclNamasdasdasdasd: " + methodDecl.getName());
importedDeclName = JavaDeclNameResolver.getQualifiedDeclName(methodDecl, m_typeSolver);
break;
}
}
if (importedDeclName == null && ref.hasField(memberName)) // look for field
{
JavaDeclName importedTypeDeclName = JavaDeclNameResolver.getQualifiedDeclName(ref, m_typeSolver);
if (importedTypeDeclName != null)
{
importedDeclName = new JavaDeclName(memberName);
importedDeclName.setParent(importedTypeDeclName);
}
}
}
}
}
*/
if (importedDeclName != null)
{
@@ -403,10 +444,13 @@ public class JavaAstVisitor extends JavaAstVisitorAdapter
}
else
{
// uncomment this when there are no errors where there shouldn't be
/*
JavaIndexer.recordError(
m_callbackId, "Import not found.", true, true,
nameExpr.getBeginLine(), nameExpr.getBeginColumn(), nameExpr.getEndLine(), nameExpr.getEndColumn()
);
*/
}
}
catch (Exception e)
@@ -24,6 +24,7 @@ import com.github.javaparser.ast.expr.QualifiedNameExpr;
import me.tomassetti.symbolsolver.javaparsermodel.declarations.JavaParserClassDeclaration;
import me.tomassetti.symbolsolver.javaparsermodel.declarations.JavaParserInterfaceDeclaration;
import me.tomassetti.symbolsolver.javaparsermodel.declarations.JavaParserMethodDeclaration;
import me.tomassetti.symbolsolver.model.resolution.TypeSolver;
public class JavaDeclNameResolver extends JavaNameResolver
@@ -167,6 +168,72 @@ public class JavaDeclNameResolver extends JavaNameResolver
return declName;
}
// TODO: move this to JavaSymbolSolverDeclNameResolver
/*
public static JavaDeclName getQualifiedDeclName(me.tomassetti.symbolsolver.model.declarations.MethodDeclaration methodDecl, TypeSolver typeSolver)
{
return getQualifiedDeclName(methodDecl, typeSolver, null);
}
public static JavaDeclName getQualifiedDeclName(me.tomassetti.symbolsolver.model.declarations.MethodDeclaration methodDecl, TypeSolver typeSolver, ArrayList<BodyDeclaration> ignoredContexts)
{
JavaDeclNameResolver resolver = new JavaDeclNameResolver(typeSolver, ignoredContexts);
return resolver.getQualifiedDeclName(methodDecl);
}
public JavaDeclName getQualifiedDeclName(me.tomassetti.symbolsolver.model.declarations.MethodDeclaration methodDecl)
{
JavaDeclName declName = null;
if (methodDecl != null)
{
MethodDeclaration decl = null;
if (methodDecl instanceof JavaParserMethodDeclaration)
{
decl = ((JavaParserMethodDeclaration)methodDecl).getWrappedNode();
}
else
{
methodDecl.declaringType();
String name = methodDecl.getName();
List<me.tomassetti.symbolsolver.model.resolution.TypeParameter> typeParameters = methodDecl.getTypeParameters();
List<String> typeParameterNames = new ArrayList<>();
if (typeParameters != null && typeParameters.size() > 0)
{
for (int i = 0; i < typeParameters.size(); i++)
{
typeParameterNames.add(typeParameters.get(i).getName());
}
}
JavaTypeName returnTypeName = methodDecl.getReturnType().;
List<JavaTypeName> parameterNames = new ArrayList<>();
for (Parameter parameter: decl.getParameters())
{
parameterNames.add(JavaTypeNameResolver.getQualifiedTypeName(parameter.getType(), m_typeSolver, m_ignoredContexts));
}
return new JavaDeclName(name, typeParameterNames, returnTypeName, parameterNames);
}
// todo: implement for JavaParserEnumDeclaration.ValuesMethod
if (decl != null)
{
declName = JavaDeclNameResolver.getQualifiedDeclName(decl, m_typeSolver, m_ignoredContexts);
}
}
return declName;
}
*/
public JavaDeclName getDeclName(VariableDeclarator decl)
{
return new JavaDeclName(decl.getId().getName());