src: refactor java indexer
* renamed java name classes * rearranged methods in ContextAwareAstVisitor to match the order in AstVisitor
This commit is contained in:
@@ -47,10 +47,10 @@ import org.eclipse.jdt.core.dom.TypeMethodReference;
|
||||
import org.eclipse.jdt.core.dom.TypeParameter;
|
||||
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
|
||||
|
||||
import com.sourcetrail.name.JavaDeclName;
|
||||
import com.sourcetrail.name.JavaFileName;
|
||||
import com.sourcetrail.name.JavaSymbolName;
|
||||
import com.sourcetrail.name.JavaTypeName;
|
||||
import com.sourcetrail.name.DeclName;
|
||||
import com.sourcetrail.name.FileName;
|
||||
import com.sourcetrail.name.SymbolName;
|
||||
import com.sourcetrail.name.TypeName;
|
||||
import com.sourcetrail.name.NameHierarchy;
|
||||
import com.sourcetrail.name.resolver.BindingNameResolver;
|
||||
import com.sourcetrail.name.resolver.DeclNameResolver;
|
||||
@@ -64,7 +64,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
private File m_filePath;
|
||||
private FileContent m_fileContent = null;
|
||||
private CompilationUnit m_compilationUnit;
|
||||
private Stack<List<JavaSymbolName>> m_contextStack = new Stack<>();
|
||||
private Stack<List<SymbolName>> m_contextStack = new Stack<>();
|
||||
|
||||
public AstVisitor(AstVisitorClient client, File filePath, String fileContent, CompilationUnit compilationUnit)
|
||||
{
|
||||
@@ -73,7 +73,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
m_fileContent = new FileContent(fileContent);
|
||||
m_compilationUnit = compilationUnit;
|
||||
|
||||
m_contextStack.push(Arrays.asList(new JavaFileName(filePath)));
|
||||
m_contextStack.push(Arrays.asList(new FileName(filePath)));
|
||||
}
|
||||
|
||||
protected abstract ReferenceKind getTypeReferenceKind();
|
||||
@@ -109,7 +109,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(TypeDeclaration node)
|
||||
{
|
||||
JavaDeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
DeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
Range scopeRange = getRange(node);
|
||||
|
||||
m_client.recordSymbolWithLocationAndScope(
|
||||
@@ -138,7 +138,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(TypeParameter node)
|
||||
{
|
||||
JavaDeclName symbolName = BindingNameResolver.getQualifiedName(node.resolveBinding(), m_filePath, m_compilationUnit).map(tn -> tn.toDeclName()).orElse(JavaDeclName.unsolved());
|
||||
DeclName symbolName = BindingNameResolver.getQualifiedName(node.resolveBinding(), m_filePath, m_compilationUnit).map(tn -> tn.toDeclName()).orElse(DeclName.unsolved());
|
||||
|
||||
m_client.recordSymbolWithLocation(
|
||||
symbolName.toNameHierarchy(), SymbolKind.TYPE_PARAMETER,
|
||||
@@ -162,7 +162,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(EnumDeclaration node)
|
||||
{
|
||||
JavaDeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
DeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
Range scopeRange = getRange(node);
|
||||
|
||||
m_client.recordSymbolWithLocationAndScope(
|
||||
@@ -190,7 +190,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
|
||||
public boolean visit(EnumConstantDeclaration node)
|
||||
{
|
||||
JavaDeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
DeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
|
||||
m_client.recordSymbolWithLocation(
|
||||
symbolName.toNameHierarchy(),
|
||||
@@ -219,7 +219,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
return false;
|
||||
}
|
||||
|
||||
JavaDeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
DeclName symbolName = DeclNameResolver.getQualifiedDeclName(node, m_filePath, m_compilationUnit);
|
||||
|
||||
m_client.recordSymbolWithLocationAndScope(
|
||||
symbolName.toNameHierarchy(),
|
||||
@@ -236,7 +236,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
// We use the declaration to replace type arguments with the respective type parameters inside the signature.
|
||||
IMethodBinding overriddenMethodDeclaration = overriddenMethod.get().getMethodDeclaration();
|
||||
|
||||
JavaDeclName overriddenMethodName = BindingNameResolver.getQualifiedName(overriddenMethodDeclaration, m_filePath, m_compilationUnit).orElse(JavaDeclName.unsolved());
|
||||
DeclName overriddenMethodName = BindingNameResolver.getQualifiedName(overriddenMethodDeclaration, m_filePath, m_compilationUnit).orElse(DeclName.unsolved());
|
||||
if (!overriddenMethodName.getIsUnsolved())
|
||||
{
|
||||
m_client.recordSymbol(overriddenMethodName.toNameHierarchy(), SymbolKind.METHOD, AccessKind.NONE, DefinitionKind.NONE);
|
||||
@@ -264,7 +264,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(FieldDeclaration node)
|
||||
{
|
||||
ArrayList<JavaSymbolName> childContext = new ArrayList<>();
|
||||
ArrayList<SymbolName> childContext = new ArrayList<>();
|
||||
|
||||
for (Object declarator: node.fragments())
|
||||
{
|
||||
@@ -272,7 +272,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
{
|
||||
VariableDeclarationFragment fragment = (VariableDeclarationFragment) declarator;
|
||||
|
||||
JavaDeclName symbolName = DeclNameResolver.getQualifiedDeclName(fragment, m_filePath, m_compilationUnit);
|
||||
DeclName symbolName = DeclNameResolver.getQualifiedDeclName(fragment, m_filePath, m_compilationUnit);
|
||||
|
||||
m_client.recordSymbolWithLocation(
|
||||
symbolName.toNameHierarchy(), SymbolKind.FIELD,
|
||||
@@ -301,21 +301,21 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(final ImportDeclaration node)
|
||||
{
|
||||
JavaDeclName symbolName = JavaDeclName.unsolved();
|
||||
DeclName symbolName = DeclName.unsolved();
|
||||
IBinding binding = node.resolveBinding();
|
||||
if (!binding.isRecovered())
|
||||
{
|
||||
if (binding instanceof IPackageBinding)
|
||||
{
|
||||
symbolName = BindingNameResolver.getQualifiedName((IPackageBinding) binding, m_filePath, m_compilationUnit).orElse(JavaDeclName.unsolved());
|
||||
symbolName = BindingNameResolver.getQualifiedName((IPackageBinding) binding, m_filePath, m_compilationUnit).orElse(DeclName.unsolved());
|
||||
}
|
||||
else if (binding instanceof ITypeBinding)
|
||||
{
|
||||
symbolName = BindingNameResolver.getQualifiedName((ITypeBinding) binding, m_filePath, m_compilationUnit).map(tn -> tn.toDeclName()).orElse(JavaDeclName.unsolved());
|
||||
symbolName = BindingNameResolver.getQualifiedName((ITypeBinding) binding, m_filePath, m_compilationUnit).map(tn -> tn.toDeclName()).orElse(DeclName.unsolved());
|
||||
}
|
||||
else if (binding instanceof IMethodBinding)
|
||||
{
|
||||
symbolName = BindingNameResolver.getQualifiedName((IMethodBinding) binding, m_filePath, m_compilationUnit).orElse(JavaDeclName.unsolved());
|
||||
symbolName = BindingNameResolver.getQualifiedName((IMethodBinding) binding, m_filePath, m_compilationUnit).orElse(DeclName.unsolved());
|
||||
}
|
||||
else if (binding instanceof IVariableBinding)
|
||||
{
|
||||
@@ -323,7 +323,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
}
|
||||
}
|
||||
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
m_client.recordReference(
|
||||
ReferenceKind.IMPORT,
|
||||
@@ -331,7 +331,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
getRange(node.getName()));
|
||||
}
|
||||
|
||||
Optional<JavaDeclName> packageName = BindingNameResolver.getQualifiedName(getDeclaringPackage(binding), m_filePath, m_compilationUnit);
|
||||
Optional<DeclName> packageName = BindingNameResolver.getQualifiedName(getDeclaringPackage(binding), m_filePath, m_compilationUnit);
|
||||
if (packageName.isPresent())
|
||||
{
|
||||
m_client.recordSymbol(packageName.get().toNameHierarchy(),
|
||||
@@ -344,7 +344,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(SimpleType node)
|
||||
{
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
ITypeBinding binding = node.resolveBinding();
|
||||
if (binding != null)
|
||||
@@ -354,7 +354,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
|
||||
m_client.recordReference(
|
||||
getTypeReferenceKind(),
|
||||
BindingNameResolver.getQualifiedName(binding, m_filePath, m_compilationUnit).orElse(JavaTypeName.unsolved()).toDeclName().toNameHierarchy(),
|
||||
BindingNameResolver.getQualifiedName(binding, m_filePath, m_compilationUnit).orElse(TypeName.unsolved()).toDeclName().toNameHierarchy(),
|
||||
context.toNameHierarchy(),
|
||||
getRange(node));
|
||||
}
|
||||
@@ -364,7 +364,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(QualifiedType node)
|
||||
{
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
ITypeBinding binding = node.resolveBinding();
|
||||
if (binding != null)
|
||||
@@ -374,7 +374,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
|
||||
m_client.recordReference(
|
||||
getTypeReferenceKind(),
|
||||
BindingNameResolver.getQualifiedName(binding, m_filePath, m_compilationUnit).orElse(JavaTypeName.unsolved()).toDeclName().toNameHierarchy(),
|
||||
BindingNameResolver.getQualifiedName(binding, m_filePath, m_compilationUnit).orElse(TypeName.unsolved()).toDeclName().toNameHierarchy(),
|
||||
context.toNameHierarchy(),
|
||||
getRange(node));
|
||||
}
|
||||
@@ -384,7 +384,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(NameQualifiedType node)
|
||||
{
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
ITypeBinding binding = node.resolveBinding();
|
||||
if (binding != null)
|
||||
@@ -394,7 +394,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
|
||||
m_client.recordReference(
|
||||
getTypeReferenceKind(),
|
||||
BindingNameResolver.getQualifiedName(binding, m_filePath, m_compilationUnit).orElse(JavaTypeName.unsolved()).toDeclName().toNameHierarchy(),
|
||||
BindingNameResolver.getQualifiedName(binding, m_filePath, m_compilationUnit).orElse(TypeName.unsolved()).toDeclName().toNameHierarchy(),
|
||||
context.toNameHierarchy(),
|
||||
getRange(node));
|
||||
}
|
||||
@@ -404,14 +404,14 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
@Override
|
||||
public boolean visit(final PrimitiveType node)
|
||||
{
|
||||
NameHierarchy referencedName = JavaTypeName.fromDotSeparatedString(node.getPrimitiveTypeCode().toString()).toDeclName().toNameHierarchy();
|
||||
NameHierarchy referencedName = TypeName.fromDotSeparatedString(node.getPrimitiveTypeCode().toString()).toDeclName().toNameHierarchy();
|
||||
|
||||
m_client.recordSymbol(
|
||||
referencedName, SymbolKind.BUILTIN_TYPE,
|
||||
AccessKind.NONE,
|
||||
DefinitionKind.EXPLICIT);
|
||||
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
m_client.recordReference(
|
||||
getTypeReferenceKind(),
|
||||
@@ -429,7 +429,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
if (binding instanceof IVariableBinding)
|
||||
{
|
||||
IVariableBinding variableBinding = ((IVariableBinding) binding).getVariableDeclaration();
|
||||
JavaDeclName declName = BindingNameResolver.getQualifiedName(
|
||||
DeclName declName = BindingNameResolver.getQualifiedName(
|
||||
variableBinding, m_filePath, m_compilationUnit);
|
||||
|
||||
if (declName.getIsUnsolved() && variableBinding.getDeclaringClass() == null && variableBinding.getName().equals("length"))
|
||||
@@ -445,7 +445,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
{
|
||||
m_client.recordSymbol(declName.toNameHierarchy(), SymbolKind.FIELD, AccessKind.NONE, DefinitionKind.NONE);
|
||||
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
m_client.recordReference(
|
||||
ReferenceKind.USAGE,
|
||||
@@ -560,7 +560,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
// the ClassInstanceCreation still contains the Type node.
|
||||
|
||||
AnonymousClassDeclaration anonymousClassDeclaration = node.getAnonymousClassDeclaration();
|
||||
JavaDeclName symbolName = DeclNameResolver.getQualifiedDeclName(anonymousClassDeclaration, m_filePath, m_compilationUnit);
|
||||
DeclName symbolName = DeclNameResolver.getQualifiedDeclName(anonymousClassDeclaration, m_filePath, m_compilationUnit);
|
||||
|
||||
Range anonymousClassScope = getRange(anonymousClassDeclaration);
|
||||
|
||||
@@ -584,13 +584,13 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
constructorBinding = constructorBinding.getMethodDeclaration();
|
||||
}
|
||||
|
||||
JavaDeclName referencedDeclName = BindingNameResolver.getQualifiedName(constructorBinding, m_filePath, m_compilationUnit).orElse(JavaDeclName.unsolved());
|
||||
DeclName referencedDeclName = BindingNameResolver.getQualifiedName(constructorBinding, m_filePath, m_compilationUnit).orElse(DeclName.unsolved());
|
||||
if (!referencedDeclName.getIsUnsolved())
|
||||
{
|
||||
m_client.recordSymbol(referencedDeclName.toNameHierarchy(), SymbolKind.METHOD, AccessKind.NONE, DefinitionKind.NONE);
|
||||
}
|
||||
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
m_client.recordReference(
|
||||
ReferenceKind.CALL,
|
||||
@@ -660,7 +660,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
|
||||
// --- utility methods ---
|
||||
|
||||
private void recordReferenceToMethodDeclaration(IMethodBinding methodBinding, Range range, ReferenceKind referenceKind, List<JavaSymbolName> contexts)
|
||||
private void recordReferenceToMethodDeclaration(IMethodBinding methodBinding, Range range, ReferenceKind referenceKind, List<SymbolName> contexts)
|
||||
{
|
||||
if (methodBinding != null)
|
||||
{
|
||||
@@ -668,13 +668,13 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
methodBinding = methodBinding.getMethodDeclaration();
|
||||
}
|
||||
|
||||
JavaDeclName referencedDeclName = BindingNameResolver.getQualifiedName(methodBinding, m_filePath, m_compilationUnit).orElse(JavaDeclName.unsolved());
|
||||
DeclName referencedDeclName = BindingNameResolver.getQualifiedName(methodBinding, m_filePath, m_compilationUnit).orElse(DeclName.unsolved());
|
||||
if (!referencedDeclName.getIsUnsolved())
|
||||
{
|
||||
m_client.recordSymbol(referencedDeclName.toNameHierarchy(), SymbolKind.METHOD, AccessKind.NONE, DefinitionKind.NONE);
|
||||
}
|
||||
|
||||
for (JavaSymbolName context: m_contextStack.peek())
|
||||
for (SymbolName context: m_contextStack.peek())
|
||||
{
|
||||
m_client.recordReference(
|
||||
referenceKind,
|
||||
@@ -686,7 +686,7 @@ public abstract class AstVisitor extends ASTVisitor
|
||||
|
||||
private void recordScope(Range range)
|
||||
{
|
||||
NameHierarchy nameHierarchy = JavaDeclName.scope(m_filePath, range.begin).toNameHierarchy();
|
||||
NameHierarchy nameHierarchy = DeclName.scope(m_filePath, range.begin).toNameHierarchy();
|
||||
m_client.recordLocalSymbol(nameHierarchy, new Range(range.begin, range.begin));
|
||||
m_client.recordLocalSymbol(nameHierarchy, new Range(range.end, range.end));
|
||||
}
|
||||
|
||||
@@ -118,34 +118,10 @@ public class ContextAwareAstVisitor extends AstVisitor
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(ClassInstanceCreation node)
|
||||
public boolean visit(final ImportDeclaration node)
|
||||
{
|
||||
boolean visitChildren = super.visit(node);
|
||||
|
||||
if (visitChildren)
|
||||
{
|
||||
acceptChild(node.getExpression());
|
||||
{
|
||||
m_typeRefKind.push(ReferenceKind.TYPE_ARGUMENT);
|
||||
acceptChildren(node.typeArguments());
|
||||
m_typeRefKind.pop();
|
||||
}
|
||||
|
||||
if (node.getAnonymousClassDeclaration() != null)
|
||||
{
|
||||
m_typeRefKind.push(ReferenceKind.INHERITANCE);
|
||||
acceptChild(node.getType());
|
||||
m_typeRefKind.pop();
|
||||
}
|
||||
else
|
||||
{
|
||||
acceptChild(node.getType());
|
||||
}
|
||||
|
||||
acceptChildren(node.arguments());
|
||||
acceptChild(node.getAnonymousClassDeclaration());
|
||||
}
|
||||
|
||||
// We don't want to visit the name of the ImportDeclaration because this could cause a self reference.
|
||||
super.visit(node);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -197,18 +173,6 @@ public class ContextAwareAstVisitor extends AstVisitor
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(final ImportDeclaration node)
|
||||
{
|
||||
// We don't want to visit the name of the ImportDeclaration because this could cause a self reference.
|
||||
super.visit(node);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean visit(MethodInvocation node)
|
||||
{
|
||||
@@ -286,9 +250,6 @@ public class ContextAwareAstVisitor extends AstVisitor
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean visit(CreationReference node)
|
||||
{
|
||||
@@ -345,6 +306,38 @@ public class ContextAwareAstVisitor extends AstVisitor
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(ClassInstanceCreation node)
|
||||
{
|
||||
boolean visitChildren = super.visit(node);
|
||||
|
||||
if (visitChildren)
|
||||
{
|
||||
acceptChild(node.getExpression());
|
||||
{
|
||||
m_typeRefKind.push(ReferenceKind.TYPE_ARGUMENT);
|
||||
acceptChildren(node.typeArguments());
|
||||
m_typeRefKind.pop();
|
||||
}
|
||||
|
||||
if (node.getAnonymousClassDeclaration() != null)
|
||||
{
|
||||
m_typeRefKind.push(ReferenceKind.INHERITANCE);
|
||||
acceptChild(node.getType());
|
||||
m_typeRefKind.pop();
|
||||
}
|
||||
else
|
||||
{
|
||||
acceptChild(node.getType());
|
||||
}
|
||||
|
||||
acceptChildren(node.arguments());
|
||||
acceptChild(node.getAnonymousClassDeclaration());
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(Javadoc node)
|
||||
{
|
||||
|
||||
+21
-21
@@ -5,9 +5,9 @@ import java.util.List;
|
||||
|
||||
import com.sourcetrail.Position;
|
||||
|
||||
public class JavaDeclName implements JavaSymbolName
|
||||
public class DeclName implements SymbolName
|
||||
{
|
||||
private JavaDeclName m_parent = null;
|
||||
private DeclName m_parent = null;
|
||||
private String m_name = "";
|
||||
private List<String> m_typeParameterNames = null;
|
||||
private boolean m_isUnsolved = false;
|
||||
@@ -15,75 +15,75 @@ public class JavaDeclName implements JavaSymbolName
|
||||
private boolean m_isLocal = false;
|
||||
private boolean m_isGlobal = false;
|
||||
|
||||
public static JavaDeclName unsolved()
|
||||
public static DeclName unsolved()
|
||||
{
|
||||
JavaDeclName declName = new JavaDeclName("unsolved-symbol");
|
||||
DeclName declName = new DeclName("unsolved-symbol");
|
||||
declName.m_isUnsolved = true;
|
||||
return declName;
|
||||
}
|
||||
|
||||
public static JavaDeclName anonymousClass(File filePath, int line, int col)
|
||||
public static DeclName anonymousClass(File filePath, int line, int col)
|
||||
{
|
||||
JavaDeclName declName = new JavaDeclName("anonymous class (" + filePath.getName() + "<" + line + ":" + col + ">)");
|
||||
DeclName declName = new DeclName("anonymous class (" + filePath.getName() + "<" + line + ":" + col + ">)");
|
||||
declName.m_isAnonymous = true;
|
||||
return declName;
|
||||
}
|
||||
|
||||
public static JavaDeclName localSymbol(JavaDeclName methodContextName, int id)
|
||||
public static DeclName localSymbol(DeclName methodContextName, int id)
|
||||
{
|
||||
JavaDeclName declName = new JavaDeclName(methodContextName + "<" + id + ">");
|
||||
DeclName declName = new DeclName(methodContextName + "<" + id + ">");
|
||||
declName.m_isLocal = true;
|
||||
return declName;
|
||||
}
|
||||
|
||||
public static JavaDeclName globalSymbol(File fileContext, int id)
|
||||
public static DeclName globalSymbol(File fileContext, int id)
|
||||
{
|
||||
JavaDeclName declName = new JavaDeclName(fileContext.getName() + "<" + id + ">");
|
||||
DeclName declName = new DeclName(fileContext.getName() + "<" + id + ">");
|
||||
declName.m_isGlobal = true;
|
||||
return declName;
|
||||
}
|
||||
|
||||
public static JavaDeclName scope(File fileContext, Position begin)
|
||||
public static DeclName scope(File fileContext, Position begin)
|
||||
{
|
||||
JavaDeclName declName = new JavaDeclName(fileContext.getName() + "<" + begin.line + ":" + begin.column + ">");
|
||||
DeclName declName = new DeclName(fileContext.getName() + "<" + begin.line + ":" + begin.column + ">");
|
||||
return declName;
|
||||
}
|
||||
|
||||
public static JavaDeclName fromDotSeparatedString(String s)
|
||||
public static DeclName fromDotSeparatedString(String s)
|
||||
{
|
||||
JavaDeclName declName = null;
|
||||
DeclName declName = null;
|
||||
|
||||
int separatorIndex = s.lastIndexOf('.');
|
||||
if (separatorIndex != -1)
|
||||
{
|
||||
declName = new JavaDeclName(s.substring(separatorIndex + 1));
|
||||
declName.setParent(JavaDeclName.fromDotSeparatedString(s.substring(0, separatorIndex)));
|
||||
declName = new DeclName(s.substring(separatorIndex + 1));
|
||||
declName.setParent(DeclName.fromDotSeparatedString(s.substring(0, separatorIndex)));
|
||||
}
|
||||
else
|
||||
{
|
||||
declName = new JavaDeclName(s, null);
|
||||
declName = new DeclName(s, null);
|
||||
}
|
||||
|
||||
return declName;
|
||||
}
|
||||
|
||||
public JavaDeclName(String name)
|
||||
public DeclName(String name)
|
||||
{
|
||||
m_name = name;
|
||||
}
|
||||
|
||||
public JavaDeclName(String name, List<String> typeParameterNames)
|
||||
public DeclName(String name, List<String> typeParameterNames)
|
||||
{
|
||||
m_name = name;
|
||||
m_typeParameterNames = typeParameterNames;
|
||||
}
|
||||
|
||||
public void setParent(JavaDeclName parent)
|
||||
public void setParent(DeclName parent)
|
||||
{
|
||||
m_parent = parent;
|
||||
}
|
||||
|
||||
public JavaDeclName getParent()
|
||||
public DeclName getParent()
|
||||
{
|
||||
return m_parent;
|
||||
}
|
||||
+2
-2
@@ -2,11 +2,11 @@ package com.sourcetrail.name;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class JavaFileName implements JavaSymbolName
|
||||
public class FileName implements SymbolName
|
||||
{
|
||||
private File m_filePath = null;
|
||||
|
||||
public JavaFileName(File filePath)
|
||||
public FileName(File filePath)
|
||||
{
|
||||
m_filePath = filePath;
|
||||
}
|
||||
+5
-5
@@ -4,13 +4,13 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class JavaFunctionDeclName extends JavaDeclName
|
||||
public class FunctionDeclName extends DeclName
|
||||
{
|
||||
private JavaTypeName m_returnTypeName = null;
|
||||
private List<JavaTypeName> m_parameterTypeNames = new ArrayList<>();
|
||||
private TypeName m_returnTypeName = null;
|
||||
private List<TypeName> m_parameterTypeNames = new ArrayList<>();
|
||||
private boolean m_isStatic = false;
|
||||
|
||||
public JavaFunctionDeclName(String name, JavaTypeName returnTypeName, List<JavaTypeName> parameterTypeNames, boolean isStatic)
|
||||
public FunctionDeclName(String name, TypeName returnTypeName, List<TypeName> parameterTypeNames, boolean isStatic)
|
||||
{
|
||||
super(name);
|
||||
|
||||
@@ -19,7 +19,7 @@ public class JavaFunctionDeclName extends JavaDeclName
|
||||
m_isStatic = isStatic;
|
||||
}
|
||||
|
||||
public JavaFunctionDeclName(String name, List<String> typeParameterNames, JavaTypeName returnTypeName, List<JavaTypeName> parameterTypeNames, boolean isStatic)
|
||||
public FunctionDeclName(String name, List<String> typeParameterNames, TypeName returnTypeName, List<TypeName> parameterTypeNames, boolean isStatic)
|
||||
{
|
||||
super(name, typeParameterNames);
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sourcetrail.name;
|
||||
|
||||
public interface JavaSymbolName
|
||||
public interface SymbolName
|
||||
{
|
||||
public NameHierarchy toNameHierarchy();
|
||||
}
|
||||
+19
-14
@@ -2,45 +2,45 @@ package com.sourcetrail.name;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class JavaTypeName implements JavaSymbolName
|
||||
public class TypeName implements SymbolName
|
||||
{
|
||||
private JavaDeclName m_parent = null;
|
||||
private DeclName m_parent = null;
|
||||
private String m_name = "";
|
||||
private List<String> m_typeParameterNames = null;
|
||||
private List<JavaTypeName> m_typeArguments = null;
|
||||
private List<TypeName> m_typeArguments = null;
|
||||
private boolean m_isUnsolved = false;
|
||||
|
||||
public static JavaTypeName unsolved()
|
||||
public static TypeName unsolved()
|
||||
{
|
||||
JavaTypeName typeName = new JavaTypeName("unsolved-type", null);
|
||||
TypeName typeName = new TypeName("unsolved-type", null);
|
||||
typeName.m_isUnsolved = true;
|
||||
return typeName;
|
||||
}
|
||||
|
||||
public static JavaTypeName fromDotSeparatedString(String s)
|
||||
public static TypeName fromDotSeparatedString(String s)
|
||||
{
|
||||
JavaTypeName typeName = null;
|
||||
TypeName typeName = null;
|
||||
|
||||
int separatorIndex = s.lastIndexOf('.');
|
||||
if (separatorIndex != -1)
|
||||
{
|
||||
typeName = new JavaTypeName(s.substring(separatorIndex + 1), JavaDeclName.fromDotSeparatedString(s.substring(0, separatorIndex)));
|
||||
typeName = new TypeName(s.substring(separatorIndex + 1), DeclName.fromDotSeparatedString(s.substring(0, separatorIndex)));
|
||||
}
|
||||
else
|
||||
{
|
||||
typeName = new JavaTypeName(s, null);
|
||||
typeName = new TypeName(s, null);
|
||||
}
|
||||
|
||||
return typeName;
|
||||
}
|
||||
|
||||
public JavaTypeName(String name, JavaDeclName parent)
|
||||
public TypeName(String name, DeclName parent)
|
||||
{
|
||||
m_parent = parent;
|
||||
m_name = name;
|
||||
}
|
||||
|
||||
public JavaTypeName(String name, List<String> typeParameterNames, List<JavaTypeName> typeArguments, JavaDeclName parent)
|
||||
public TypeName(String name, List<String> typeParameterNames, List<TypeName> typeArguments, DeclName parent)
|
||||
{
|
||||
m_parent = parent;
|
||||
m_name = name;
|
||||
@@ -48,7 +48,7 @@ public class JavaTypeName implements JavaSymbolName
|
||||
m_typeArguments = typeArguments;
|
||||
}
|
||||
|
||||
public JavaDeclName getParent()
|
||||
public DeclName getParent()
|
||||
{
|
||||
return m_parent;
|
||||
}
|
||||
@@ -58,9 +58,14 @@ public class JavaTypeName implements JavaSymbolName
|
||||
return m_name;
|
||||
}
|
||||
|
||||
public JavaDeclName toDeclName()
|
||||
public boolean getIsUnsolved()
|
||||
{
|
||||
JavaDeclName declName = new JavaDeclName(m_name, m_typeParameterNames);
|
||||
return m_isUnsolved;
|
||||
}
|
||||
|
||||
public DeclName toDeclName()
|
||||
{
|
||||
DeclName declName = new DeclName(m_name, m_typeParameterNames);
|
||||
declName.setParent(m_parent);
|
||||
return declName;
|
||||
}
|
||||
+3
-3
@@ -2,12 +2,12 @@ package com.sourcetrail.name;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class JavaVariableDeclName extends JavaDeclName
|
||||
public class VariableDeclName extends DeclName
|
||||
{
|
||||
private JavaTypeName m_typeName = null;
|
||||
private TypeName m_typeName = null;
|
||||
private boolean m_isStatic = false;
|
||||
|
||||
public JavaVariableDeclName(String name, JavaTypeName typeName, boolean isStatic)
|
||||
public VariableDeclName(String name, TypeName typeName, boolean isStatic)
|
||||
{
|
||||
super(name);
|
||||
|
||||
@@ -16,10 +16,10 @@ import org.eclipse.jdt.core.dom.IVariableBinding;
|
||||
import org.eclipse.jdt.core.dom.Modifier;
|
||||
|
||||
import com.sourcetrail.ContextList;
|
||||
import com.sourcetrail.name.JavaDeclName;
|
||||
import com.sourcetrail.name.JavaFunctionDeclName;
|
||||
import com.sourcetrail.name.JavaTypeName;
|
||||
import com.sourcetrail.name.JavaVariableDeclName;
|
||||
import com.sourcetrail.name.DeclName;
|
||||
import com.sourcetrail.name.FunctionDeclName;
|
||||
import com.sourcetrail.name.TypeName;
|
||||
import com.sourcetrail.name.VariableDeclName;
|
||||
|
||||
public class BindingNameResolver extends NameResolver
|
||||
{
|
||||
@@ -89,18 +89,18 @@ public class BindingNameResolver extends NameResolver
|
||||
super(currentFile, compilationUnit, ignoredContexts);
|
||||
}
|
||||
|
||||
public static Optional<JavaTypeName> getQualifiedName(ITypeBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
public static Optional<TypeName> getQualifiedName(ITypeBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
{
|
||||
return getQualifiedName(binding, currentFile, compilationUnit, null);
|
||||
}
|
||||
|
||||
public static Optional<JavaTypeName> getQualifiedName(ITypeBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
public static Optional<TypeName> getQualifiedName(ITypeBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
{
|
||||
BindingNameResolver resolver = new BindingNameResolver(currentFile, compilationUnit, ignoredContexts);
|
||||
return resolver.getQualifiedName(binding);
|
||||
}
|
||||
|
||||
public Optional<JavaTypeName> getQualifiedName(ITypeBinding binding)
|
||||
public Optional<TypeName> getQualifiedName(ITypeBinding binding)
|
||||
{
|
||||
if (binding == null)
|
||||
{
|
||||
@@ -116,8 +116,8 @@ public class BindingNameResolver extends NameResolver
|
||||
ASTNode node = m_compilationUnit.findDeclaringNode(binding);
|
||||
if (node instanceof AnonymousClassDeclaration)
|
||||
{
|
||||
JavaDeclName decl = DeclNameResolver.getQualifiedDeclName((AnonymousClassDeclaration) node, m_currentFile, m_compilationUnit, m_ignoredContexts);
|
||||
return Optional.of(new JavaTypeName(decl.getName(), decl.getTypeParameterNames(), null, decl.getParent()));
|
||||
DeclName decl = DeclNameResolver.getQualifiedDeclName((AnonymousClassDeclaration) node, m_currentFile, m_compilationUnit, m_ignoredContexts);
|
||||
return Optional.of(new TypeName(decl.getName(), decl.getTypeParameterNames(), null, decl.getParent()));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -127,21 +127,21 @@ public class BindingNameResolver extends NameResolver
|
||||
|
||||
if (binding.isParameterizedType())
|
||||
{
|
||||
List<JavaTypeName> typeArguments = new ArrayList<>();
|
||||
List<TypeName> typeArguments = new ArrayList<>();
|
||||
for (ITypeBinding typeArgumentBinding: binding.getTypeArguments())
|
||||
{
|
||||
Optional<JavaTypeName> typeArgument = getQualifiedName(typeArgumentBinding);
|
||||
Optional<TypeName> typeArgument = getQualifiedName(typeArgumentBinding);
|
||||
if (typeArgument.isPresent())
|
||||
{
|
||||
typeArguments.add(typeArgument.get());
|
||||
}
|
||||
}
|
||||
|
||||
Optional<JavaTypeName> typeName = getQualifiedName(binding.getTypeDeclaration());
|
||||
Optional<TypeName> typeName = getQualifiedName(binding.getTypeDeclaration());
|
||||
if (typeName.isPresent())
|
||||
{
|
||||
JavaDeclName declName = typeName.get().toDeclName();
|
||||
return Optional.of(new JavaTypeName(declName.getName(), declName.getTypeParameterNames(), typeArguments, declName.getParent()));
|
||||
DeclName declName = typeName.get().toDeclName();
|
||||
return Optional.of(new TypeName(declName.getName(), declName.getTypeParameterNames(), typeArguments, declName.getParent()));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -160,28 +160,28 @@ public class BindingNameResolver extends NameResolver
|
||||
}
|
||||
}
|
||||
|
||||
JavaDeclName parentDeclName = getQualifiedContextName(binding);
|
||||
DeclName parentDeclName = getQualifiedContextName(binding);
|
||||
if (parentDeclName != null && parentDeclName.getIsUnsolved())
|
||||
{
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
// type arguments will be set in caller (which is this same method)
|
||||
return Optional.of(new JavaTypeName(name, typeParameterNames, null, parentDeclName));
|
||||
return Optional.of(new TypeName(name, typeParameterNames, null, parentDeclName));
|
||||
}
|
||||
|
||||
public static Optional<JavaDeclName> getQualifiedName(IMethodBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
public static Optional<DeclName> getQualifiedName(IMethodBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
{
|
||||
return getQualifiedName(binding, currentFile, compilationUnit, null);
|
||||
}
|
||||
|
||||
public static Optional<JavaDeclName> getQualifiedName(IMethodBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
public static Optional<DeclName> getQualifiedName(IMethodBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
{
|
||||
BindingNameResolver resolver = new BindingNameResolver(currentFile, compilationUnit, ignoredContexts);
|
||||
return resolver.getQualifiedName(binding);
|
||||
}
|
||||
|
||||
public Optional<JavaDeclName> getQualifiedName(IMethodBinding binding)
|
||||
public Optional<DeclName> getQualifiedName(IMethodBinding binding)
|
||||
{
|
||||
if (binding == null)
|
||||
{
|
||||
@@ -203,19 +203,19 @@ public class BindingNameResolver extends NameResolver
|
||||
ContextList ignoredContexts = m_ignoredContexts.copy();
|
||||
ignoredContexts.add(binding);
|
||||
|
||||
JavaTypeName returnTypeName = binding.isConstructor() ? null : getQualifiedName(binding.getReturnType(), m_currentFile, m_compilationUnit, ignoredContexts).orElse(JavaTypeName.unsolved());
|
||||
TypeName returnTypeName = binding.isConstructor() ? null : getQualifiedName(binding.getReturnType(), m_currentFile, m_compilationUnit, ignoredContexts).orElse(TypeName.unsolved());
|
||||
|
||||
List<JavaTypeName> parameterTypeNames = new ArrayList<>();
|
||||
List<TypeName> parameterTypeNames = new ArrayList<>();
|
||||
for (ITypeBinding parameterType: binding.getParameterTypes())
|
||||
{
|
||||
parameterTypeNames.add(getQualifiedName(parameterType, m_currentFile, m_compilationUnit, ignoredContexts).orElse(JavaTypeName.unsolved()));
|
||||
parameterTypeNames.add(getQualifiedName(parameterType, m_currentFile, m_compilationUnit, ignoredContexts).orElse(TypeName.unsolved()));
|
||||
}
|
||||
|
||||
boolean isStatic = Modifier.isStatic(binding.getModifiers());
|
||||
|
||||
JavaFunctionDeclName declName = new JavaFunctionDeclName(name, typeParameterNames, returnTypeName, parameterTypeNames, isStatic);
|
||||
FunctionDeclName declName = new FunctionDeclName(name, typeParameterNames, returnTypeName, parameterTypeNames, isStatic);
|
||||
|
||||
JavaDeclName parentDeclName = getQualifiedContextName(binding);
|
||||
DeclName parentDeclName = getQualifiedContextName(binding);
|
||||
if (parentDeclName != null)
|
||||
{
|
||||
if (!parentDeclName.getIsUnsolved())
|
||||
@@ -231,58 +231,58 @@ public class BindingNameResolver extends NameResolver
|
||||
return Optional.of(declName);
|
||||
}
|
||||
|
||||
public static Optional<JavaDeclName> getQualifiedName(IPackageBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
public static Optional<DeclName> getQualifiedName(IPackageBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
{
|
||||
return getQualifiedName(binding, currentFile, compilationUnit, null);
|
||||
}
|
||||
|
||||
public static Optional<JavaDeclName> getQualifiedName(IPackageBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
public static Optional<DeclName> getQualifiedName(IPackageBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
{
|
||||
BindingNameResolver resolver = new BindingNameResolver(currentFile, compilationUnit, ignoredContexts);
|
||||
return resolver.getQualifiedName(binding);
|
||||
}
|
||||
|
||||
public Optional<JavaDeclName> getQualifiedName(IPackageBinding binding)
|
||||
public Optional<DeclName> getQualifiedName(IPackageBinding binding)
|
||||
{
|
||||
if (!binding.isUnnamed())
|
||||
{
|
||||
return Optional.of(JavaDeclName.fromDotSeparatedString(binding.getName()));
|
||||
return Optional.of(DeclName.fromDotSeparatedString(binding.getName()));
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedName(IVariableBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
public static DeclName getQualifiedName(IVariableBinding binding, File currentFile, CompilationUnit compilationUnit)
|
||||
{
|
||||
return getQualifiedName(binding, currentFile, compilationUnit, null);
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedName(IVariableBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
public static DeclName getQualifiedName(IVariableBinding binding, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
{
|
||||
BindingNameResolver resolver = new BindingNameResolver(currentFile, compilationUnit, ignoredContexts);
|
||||
return resolver.getQualifiedName(binding);
|
||||
}
|
||||
|
||||
public JavaDeclName getQualifiedName(IVariableBinding binding)
|
||||
public DeclName getQualifiedName(IVariableBinding binding)
|
||||
{
|
||||
if (binding == null)
|
||||
{
|
||||
return JavaDeclName.unsolved();
|
||||
return DeclName.unsolved();
|
||||
}
|
||||
|
||||
if (binding.isField() || binding.isEnumConstant())
|
||||
{
|
||||
JavaDeclName declName;
|
||||
DeclName declName;
|
||||
if (binding.isEnumConstant())
|
||||
{
|
||||
declName = new JavaDeclName(binding.getName());
|
||||
declName = new DeclName(binding.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
JavaTypeName typeName = getQualifiedName(binding.getType()).orElse(JavaTypeName.unsolved());
|
||||
declName = new JavaVariableDeclName(binding.getName(), typeName, Modifier.isStatic(binding.getModifiers()));
|
||||
TypeName typeName = getQualifiedName(binding.getType()).orElse(TypeName.unsolved());
|
||||
declName = new VariableDeclName(binding.getName(), typeName, Modifier.isStatic(binding.getModifiers()));
|
||||
}
|
||||
|
||||
JavaDeclName parentDeclName = getQualifiedContextName(binding);
|
||||
DeclName parentDeclName = getQualifiedContextName(binding);
|
||||
if (parentDeclName != null)
|
||||
{
|
||||
if (!parentDeclName.getIsUnsolved())
|
||||
@@ -291,7 +291,7 @@ public class BindingNameResolver extends NameResolver
|
||||
}
|
||||
else
|
||||
{
|
||||
declName = JavaDeclName.unsolved();
|
||||
declName = DeclName.unsolved();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -301,16 +301,16 @@ public class BindingNameResolver extends NameResolver
|
||||
{
|
||||
if (binding.getDeclaringMethod() != null)
|
||||
{
|
||||
return JavaDeclName.localSymbol(getQualifiedName(binding.getDeclaringMethod()).orElse(JavaDeclName.unsolved()), binding.getVariableId());
|
||||
return DeclName.localSymbol(getQualifiedName(binding.getDeclaringMethod()).orElse(DeclName.unsolved()), binding.getVariableId());
|
||||
}
|
||||
else
|
||||
{
|
||||
return JavaDeclName.globalSymbol(m_currentFile, binding.getVariableId());
|
||||
return DeclName.globalSymbol(m_currentFile, binding.getVariableId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private JavaDeclName getQualifiedContextName(IBinding binding)
|
||||
private DeclName getQualifiedContextName(IBinding binding)
|
||||
{
|
||||
IBinding parentBinding = getParentBinding(binding);
|
||||
|
||||
@@ -321,11 +321,11 @@ public class BindingNameResolver extends NameResolver
|
||||
|
||||
if (parentBinding instanceof ITypeBinding)
|
||||
{
|
||||
return getQualifiedName((ITypeBinding) parentBinding).map(tn ->tn.toDeclName()).orElse(JavaDeclName.unsolved());
|
||||
return getQualifiedName((ITypeBinding) parentBinding).map(tn ->tn.toDeclName()).orElse(DeclName.unsolved());
|
||||
}
|
||||
else if (parentBinding instanceof IMethodBinding)
|
||||
{
|
||||
return getQualifiedName((IMethodBinding) parentBinding).orElse(JavaDeclName.unsolved());
|
||||
return getQualifiedName((IMethodBinding) parentBinding).orElse(DeclName.unsolved());
|
||||
}
|
||||
else if (parentBinding instanceof IVariableBinding)
|
||||
{
|
||||
|
||||
@@ -30,10 +30,10 @@ import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
|
||||
import com.sourcetrail.ContextList;
|
||||
import com.sourcetrail.Position;
|
||||
import com.sourcetrail.Utility;
|
||||
import com.sourcetrail.name.JavaDeclName;
|
||||
import com.sourcetrail.name.JavaFunctionDeclName;
|
||||
import com.sourcetrail.name.JavaTypeName;
|
||||
import com.sourcetrail.name.JavaVariableDeclName;
|
||||
import com.sourcetrail.name.DeclName;
|
||||
import com.sourcetrail.name.FunctionDeclName;
|
||||
import com.sourcetrail.name.TypeName;
|
||||
import com.sourcetrail.name.VariableDeclName;
|
||||
|
||||
public class DeclNameResolver extends NameResolver
|
||||
{
|
||||
@@ -42,27 +42,27 @@ public class DeclNameResolver extends NameResolver
|
||||
super(currentFile, compilationUnit, ignoredContexts);
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedDeclName(VariableDeclarationFragment decl, File currentFile, CompilationUnit compilationUnit)
|
||||
public static DeclName getQualifiedDeclName(VariableDeclarationFragment decl, File currentFile, CompilationUnit compilationUnit)
|
||||
{
|
||||
return getQualifiedDeclName(decl, currentFile, compilationUnit, null);
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedDeclName(VariableDeclarationFragment decl, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
public static DeclName getQualifiedDeclName(VariableDeclarationFragment decl, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
{
|
||||
DeclNameResolver resolver = new DeclNameResolver(currentFile, compilationUnit, ignoredContexts);
|
||||
return resolver.getQualifiedDeclName(decl);
|
||||
}
|
||||
|
||||
public JavaDeclName getQualifiedDeclName(VariableDeclarationFragment decl)
|
||||
public DeclName getQualifiedDeclName(VariableDeclarationFragment decl)
|
||||
{
|
||||
JavaDeclName declName = JavaDeclName.unsolved();
|
||||
DeclName declName = DeclName.unsolved();
|
||||
|
||||
if (decl != null)
|
||||
{
|
||||
declName = getDeclName(decl);
|
||||
if (!declName.getIsUnsolved())
|
||||
{
|
||||
JavaDeclName parentDeclName = getQualifiedContextName(decl);
|
||||
DeclName parentDeclName = getQualifiedContextName(decl);
|
||||
if (parentDeclName != null)
|
||||
{
|
||||
if (!parentDeclName.getIsUnsolved())
|
||||
@@ -71,7 +71,7 @@ public class DeclNameResolver extends NameResolver
|
||||
}
|
||||
else
|
||||
{
|
||||
declName = JavaDeclName.unsolved();
|
||||
declName = DeclName.unsolved();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -79,9 +79,9 @@ public class DeclNameResolver extends NameResolver
|
||||
return declName;
|
||||
}
|
||||
|
||||
public JavaDeclName getDeclName(VariableDeclarationFragment decl)
|
||||
public DeclName getDeclName(VariableDeclarationFragment decl)
|
||||
{
|
||||
JavaTypeName typeName = JavaTypeName.unsolved();
|
||||
TypeName typeName = TypeName.unsolved();
|
||||
|
||||
boolean isStatic = false;
|
||||
Optional<FieldDeclaration> fieldDeclaration = getAncestorOfType(decl, FieldDeclaration.class);
|
||||
@@ -99,33 +99,33 @@ public class DeclNameResolver extends NameResolver
|
||||
fieldDeclaration.get().getType().resolveBinding(),
|
||||
m_currentFile,
|
||||
m_compilationUnit,
|
||||
m_ignoredContexts.copy()).orElse(JavaTypeName.unsolved());
|
||||
m_ignoredContexts.copy()).orElse(TypeName.unsolved());
|
||||
}
|
||||
|
||||
return new JavaVariableDeclName(decl.getName().getIdentifier(), typeName, isStatic);
|
||||
return new VariableDeclName(decl.getName().getIdentifier(), typeName, isStatic);
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedDeclName(BodyDeclaration decl, File currentFile, CompilationUnit compilationUnit)
|
||||
public static DeclName getQualifiedDeclName(BodyDeclaration decl, File currentFile, CompilationUnit compilationUnit)
|
||||
{
|
||||
return getQualifiedDeclName(decl, currentFile, compilationUnit, null);
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedDeclName(BodyDeclaration decl, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
public static DeclName getQualifiedDeclName(BodyDeclaration decl, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
{
|
||||
DeclNameResolver resolver = new DeclNameResolver(currentFile, compilationUnit, ignoredContexts);
|
||||
return resolver.getQualifiedDeclName(decl);
|
||||
}
|
||||
|
||||
public JavaDeclName getQualifiedDeclName(BodyDeclaration decl)
|
||||
public DeclName getQualifiedDeclName(BodyDeclaration decl)
|
||||
{
|
||||
JavaDeclName declName = JavaDeclName.unsolved();
|
||||
DeclName declName = DeclName.unsolved();
|
||||
|
||||
if (decl != null)
|
||||
{
|
||||
declName = getDeclName(decl);
|
||||
if (!declName.getIsUnsolved())
|
||||
{
|
||||
JavaDeclName parentDeclName = getQualifiedContextName(decl);
|
||||
DeclName parentDeclName = getQualifiedContextName(decl);
|
||||
if (parentDeclName != null)
|
||||
{
|
||||
if (!parentDeclName.getIsUnsolved())
|
||||
@@ -134,7 +134,7 @@ public class DeclNameResolver extends NameResolver
|
||||
}
|
||||
else
|
||||
{
|
||||
declName = JavaDeclName.unsolved();
|
||||
declName = DeclName.unsolved();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -143,19 +143,19 @@ public class DeclNameResolver extends NameResolver
|
||||
return declName;
|
||||
}
|
||||
|
||||
public JavaDeclName getDeclName(BodyDeclaration decl)
|
||||
public DeclName getDeclName(BodyDeclaration decl)
|
||||
{
|
||||
JavaDeclName declName = JavaDeclName.unsolved();
|
||||
DeclName declName = DeclName.unsolved();
|
||||
|
||||
if (decl != null)
|
||||
{
|
||||
if (decl instanceof AnnotationTypeDeclaration)
|
||||
{
|
||||
declName = new JavaDeclName("AnnotationTypeDeclaration");
|
||||
declName = new DeclName("AnnotationTypeDeclaration");
|
||||
}
|
||||
else if (decl instanceof EnumDeclaration)
|
||||
{
|
||||
declName = new JavaDeclName(((EnumDeclaration) decl).getName().getIdentifier());
|
||||
declName = new DeclName(((EnumDeclaration) decl).getName().getIdentifier());
|
||||
}
|
||||
else if (decl instanceof TypeDeclaration)
|
||||
{
|
||||
@@ -170,23 +170,23 @@ public class DeclNameResolver extends NameResolver
|
||||
}
|
||||
}
|
||||
|
||||
declName = new JavaDeclName(typeDeclaration.getName().getIdentifier(), typeParameterNames);
|
||||
declName = new DeclName(typeDeclaration.getName().getIdentifier(), typeParameterNames);
|
||||
}
|
||||
else if (decl instanceof AnnotationTypeMemberDeclaration)
|
||||
{
|
||||
declName = new JavaDeclName("AnnotationTypeMemberDeclaration");
|
||||
declName = new DeclName("AnnotationTypeMemberDeclaration");
|
||||
}
|
||||
else if (decl instanceof EnumConstantDeclaration)
|
||||
{
|
||||
declName = new JavaDeclName(((EnumConstantDeclaration) decl).getName().getIdentifier());
|
||||
declName = new DeclName(((EnumConstantDeclaration) decl).getName().getIdentifier());
|
||||
}
|
||||
else if (decl instanceof FieldDeclaration)
|
||||
{
|
||||
declName = new JavaDeclName("FieldDeclaration");
|
||||
declName = new DeclName("FieldDeclaration");
|
||||
}
|
||||
else if (decl instanceof Initializer)
|
||||
{
|
||||
declName = new JavaDeclName("Initializer");
|
||||
declName = new DeclName("Initializer");
|
||||
}
|
||||
else if (decl instanceof MethodDeclaration)
|
||||
{
|
||||
@@ -204,20 +204,20 @@ public class DeclNameResolver extends NameResolver
|
||||
ContextList ignoredContexts = m_ignoredContexts.copy();
|
||||
ignoredContexts.add(((MethodDeclaration) decl).resolveBinding());
|
||||
|
||||
JavaTypeName returnTypeName = methodDeclaration.isConstructor() ? null : BindingNameResolver.getQualifiedName(
|
||||
methodDeclaration.getReturnType2().resolveBinding(), m_currentFile, m_compilationUnit, ignoredContexts).orElse(JavaTypeName.unsolved());
|
||||
TypeName returnTypeName = methodDeclaration.isConstructor() ? null : BindingNameResolver.getQualifiedName(
|
||||
methodDeclaration.getReturnType2().resolveBinding(), m_currentFile, m_compilationUnit, ignoredContexts).orElse(TypeName.unsolved());
|
||||
|
||||
List<JavaTypeName> parameterTypeNames = new ArrayList<>();
|
||||
List<TypeName> parameterTypeNames = new ArrayList<>();
|
||||
for (Object parameter: methodDeclaration.parameters())
|
||||
{
|
||||
if (parameter instanceof SingleVariableDeclaration)
|
||||
{
|
||||
parameterTypeNames.add(BindingNameResolver.getQualifiedName(
|
||||
((SingleVariableDeclaration) parameter).getType().resolveBinding(), m_currentFile, m_compilationUnit, ignoredContexts).orElse(JavaTypeName.unsolved()));
|
||||
((SingleVariableDeclaration) parameter).getType().resolveBinding(), m_currentFile, m_compilationUnit, ignoredContexts).orElse(TypeName.unsolved()));
|
||||
}
|
||||
}
|
||||
|
||||
declName = new JavaFunctionDeclName(
|
||||
declName = new FunctionDeclName(
|
||||
methodDeclaration.getName().getIdentifier(),
|
||||
typeParameterNames,
|
||||
returnTypeName,
|
||||
@@ -229,27 +229,27 @@ public class DeclNameResolver extends NameResolver
|
||||
return declName;
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedDeclName(AnonymousClassDeclaration decl, File currentFile, CompilationUnit compilationUnit)
|
||||
public static DeclName getQualifiedDeclName(AnonymousClassDeclaration decl, File currentFile, CompilationUnit compilationUnit)
|
||||
{
|
||||
return getQualifiedDeclName(decl, currentFile, compilationUnit, null);
|
||||
}
|
||||
|
||||
public static JavaDeclName getQualifiedDeclName(AnonymousClassDeclaration decl, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
public static DeclName getQualifiedDeclName(AnonymousClassDeclaration decl, File currentFile, CompilationUnit compilationUnit, ContextList ignoredContexts)
|
||||
{
|
||||
DeclNameResolver resolver = new DeclNameResolver(currentFile, compilationUnit, ignoredContexts);
|
||||
return resolver.getQualifiedDeclName(decl);
|
||||
}
|
||||
|
||||
public JavaDeclName getQualifiedDeclName(AnonymousClassDeclaration decl)
|
||||
public DeclName getQualifiedDeclName(AnonymousClassDeclaration decl)
|
||||
{
|
||||
JavaDeclName declName = JavaDeclName.unsolved();
|
||||
DeclName declName = DeclName.unsolved();
|
||||
|
||||
if (decl != null)
|
||||
{
|
||||
declName = getDeclName(decl);
|
||||
if (!declName.getIsUnsolved())
|
||||
{
|
||||
JavaDeclName parentDeclName = getQualifiedContextName(decl);
|
||||
DeclName parentDeclName = getQualifiedContextName(decl);
|
||||
if (parentDeclName != null)
|
||||
{
|
||||
if (!parentDeclName.getIsUnsolved())
|
||||
@@ -258,7 +258,7 @@ public class DeclNameResolver extends NameResolver
|
||||
}
|
||||
else
|
||||
{
|
||||
declName = JavaDeclName.unsolved();
|
||||
declName = DeclName.unsolved();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -266,28 +266,28 @@ public class DeclNameResolver extends NameResolver
|
||||
return declName;
|
||||
}
|
||||
|
||||
public JavaDeclName getDeclName(AnonymousClassDeclaration decl)
|
||||
public DeclName getDeclName(AnonymousClassDeclaration decl)
|
||||
{
|
||||
Position pos = Utility.getRange(decl, m_compilationUnit).begin;
|
||||
return JavaDeclName.anonymousClass(m_currentFile, pos.line, pos.column);
|
||||
return DeclName.anonymousClass(m_currentFile, pos.line, pos.column);
|
||||
}
|
||||
|
||||
|
||||
public static JavaDeclName getQualifiedName(Name name)
|
||||
public static DeclName getQualifiedName(Name name)
|
||||
{
|
||||
if (name.isSimpleName())
|
||||
{
|
||||
return new JavaDeclName(((SimpleName) name).getIdentifier());
|
||||
return new DeclName(((SimpleName) name).getIdentifier());
|
||||
}
|
||||
else
|
||||
{
|
||||
JavaDeclName declName = new JavaDeclName(((QualifiedName) name).getName().getIdentifier());
|
||||
DeclName declName = new DeclName(((QualifiedName) name).getName().getIdentifier());
|
||||
declName.setParent(getQualifiedName(((QualifiedName) name).getQualifier()));
|
||||
return declName;
|
||||
}
|
||||
}
|
||||
|
||||
private JavaDeclName getQualifiedContextName(ASTNode decl)
|
||||
private DeclName getQualifiedContextName(ASTNode decl)
|
||||
{
|
||||
ASTNode parentNode = decl.getParent();
|
||||
if (parentNode == null)
|
||||
|
||||
Reference in New Issue
Block a user