logic: fixed some cases that caused Java code to throw exceptions

This commit is contained in:
mlangkabel
2017-12-01 16:19:17 +01:00
parent 4f3044fec8
commit faf9e7655f
3 changed files with 18 additions and 13 deletions
@@ -228,6 +228,7 @@ public abstract class AstVisitor extends ASTVisitor
{
if (m_client.getInterrupted())
{
m_contextStack.push(new ArrayList<>());
return false;
}
@@ -210,8 +210,7 @@ public class JavaIndexer
astVisitorClient.logInfo(
"Extracted classes.jar file from \"" + aarFilePath.toString() + "\" to \"" + tempFile.getAbsolutePath() + "\". " +
"This file will be automatically deleted when the session ends."
);
"This file will be automatically deleted when the session ends.");
return tempFile;
}
@@ -12,6 +12,7 @@ import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.IPackageBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.IVariableBinding;
import org.eclipse.jdt.core.dom.ImportDeclaration;
import org.eclipse.jdt.core.dom.MethodInvocation;
import org.eclipse.jdt.core.dom.Name;
@@ -201,18 +202,22 @@ public class QualifierVisitor
else if (node instanceof SuperFieldAccess)
{
SuperFieldAccess expression = (SuperFieldAccess) node;
IVariableBinding fieldBinding = expression.resolveFieldBinding();
m_client.recordQualifierLocation(
BindingNameResolver
.getQualifiedName(expression.resolveFieldBinding().getDeclaringClass(), m_filePath, m_compilationUnit)
.orElse(TypeName.unsolved())
.toDeclName()
.toNameHierarchy(),
fileContent.findRange(
"super",
expression.getQualifier() != null
? getRange(expression.getQualifier()).end
: getRange(expression).begin));
if (fieldBinding != null)
{
m_client.recordQualifierLocation(
BindingNameResolver
.getQualifiedName(fieldBinding.getDeclaringClass(), m_filePath, m_compilationUnit)
.orElse(TypeName.unsolved())
.toDeclName()
.toNameHierarchy(),
fileContent.findRange(
"super",
expression.getQualifier() != null
? getRange(expression.getQualifier()).end
: getRange(expression).begin));
}
recordNodeAsQualifier(expression.getQualifier());
}