Move method from JavaDescriptorResolver to PropertiesResolver and ClassResolver
This commit is contained in:
+15
-55
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.jet.lang.resolve.java;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiAnnotation;
|
||||
import com.intellij.psi.PsiClass;
|
||||
@@ -44,7 +43,10 @@ import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author abreslav
|
||||
@@ -99,12 +101,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
private PsiClassFinder psiClassFinder;
|
||||
private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver;
|
||||
private final PropertiesResolver propertiesResolver = new PropertiesResolver(this);
|
||||
public final ClassResolver classResolver = new ClassResolver(this);
|
||||
private final ClassResolver classResolver = new ClassResolver(this);
|
||||
private final ConstructorResolver constructorResolver = new ConstructorResolver(this);
|
||||
private final CompileTimeConstResolver compileTimeConstResolver = new CompileTimeConstResolver(this);
|
||||
private final AnnotationResolver annotationResolver = new AnnotationResolver(this);
|
||||
public final FunctionResolver functionResolver = new FunctionResolver(this);
|
||||
public final NamespaceResolver namespaceResolver = new NamespaceResolver(this);
|
||||
private final FunctionResolver functionResolver = new FunctionResolver(this);
|
||||
private final NamespaceResolver namespaceResolver = new NamespaceResolver(this);
|
||||
private final InnerClassResolver innerClassResolver = new InnerClassResolver(this);
|
||||
private final ValueParameterResolver valueParameterResolver = new ValueParameterResolver(this);
|
||||
|
||||
@@ -136,16 +138,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
this.propertiesResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver);
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
public ClassDescriptor resolveJavaLangObject() {
|
||||
ClassDescriptor clazz = classResolver.resolveClass(OBJECT_FQ_NAME, DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
||||
if (clazz == null) {
|
||||
// TODO: warning
|
||||
}
|
||||
return clazz;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ClassDescriptor resolveClass(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) {
|
||||
return classResolver.resolveClass(qualifiedName, searchRule);
|
||||
@@ -212,6 +204,14 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
return namespaceResolver.getJavaPackageScope(fqName, ns);
|
||||
}
|
||||
|
||||
public Set<VariableDescriptor> resolveFieldGroupByName(Name name, ResolverScopeData data) {
|
||||
return propertiesResolver.resolveFieldGroupByName(name, data);
|
||||
}
|
||||
|
||||
public Set<VariableDescriptor> resolveFieldGroup(ResolverScopeData data) {
|
||||
return propertiesResolver.resolveFieldGroup(data);
|
||||
}
|
||||
|
||||
public static class ValueParameterDescriptors {
|
||||
private final JetType receiverType;
|
||||
private final List<ValueParameterDescriptor> descriptors;
|
||||
@@ -232,46 +232,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
}
|
||||
}
|
||||
|
||||
public Set<VariableDescriptor> resolveFieldGroupByName(@NotNull Name fieldName, @NotNull ResolverScopeData scopeData) {
|
||||
|
||||
PsiClass psiClass = scopeData.getPsiClass();
|
||||
DescriptorResolverUtils.getResolverScopeData(scopeData);
|
||||
|
||||
NamedMembers namedMembers = scopeData.getNamedMembersMap().get(fieldName);
|
||||
if (namedMembers == null) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
//noinspection ConstantConditions
|
||||
String qualifiedName = psiClass == null ? scopeData.getPsiPackage().getQualifiedName() : psiClass.getQualifiedName();
|
||||
propertiesResolver.resolveNamedGroupProperties(scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, fieldName,
|
||||
"class or namespace " + qualifiedName);
|
||||
|
||||
return namedMembers.getPropertyDescriptors();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<VariableDescriptor> resolveFieldGroup(@NotNull ResolverScopeData scopeData) {
|
||||
|
||||
DescriptorResolverUtils.getResolverScopeData(scopeData);
|
||||
final PsiClass psiClass = scopeData.getPsiClass();
|
||||
assert psiClass != null;
|
||||
|
||||
Set<VariableDescriptor> descriptors = Sets.newHashSet();
|
||||
Map<Name, NamedMembers> membersForProperties = scopeData.getNamedMembersMap();
|
||||
for (Map.Entry<Name, NamedMembers> entry : membersForProperties.entrySet()) {
|
||||
NamedMembers namedMembers = entry.getValue();
|
||||
Name propertyName = entry.getKey();
|
||||
|
||||
propertiesResolver.resolveNamedGroupProperties(
|
||||
scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, propertyName,
|
||||
"class or namespace " + psiClass.getQualifiedName());
|
||||
descriptors.addAll(namedMembers.getPropertyDescriptors());
|
||||
}
|
||||
|
||||
return descriptors;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<FunctionDescriptor> resolveFunctionGroup(@NotNull Name methodName, @NotNull ResolverScopeData scopeData) {
|
||||
return functionResolver.resolveFunctionGroup(methodName, scopeData);
|
||||
|
||||
+12
-2
@@ -325,7 +325,8 @@ public class ClassResolver {
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitSuperclass() {
|
||||
return new JetTypeJetSignatureReader(javaDescriptorResolver.getSemanticServices(), JetStandardLibrary.getInstance(), typeVariableResolver) {
|
||||
return new JetTypeJetSignatureReader(javaDescriptorResolver.getSemanticServices(), JetStandardLibrary.getInstance(),
|
||||
typeVariableResolver) {
|
||||
@Override
|
||||
protected void done(@NotNull JetType jetType) {
|
||||
if (!jetType.equals(JetStandardClasses.getAnyType())) {
|
||||
@@ -362,7 +363,7 @@ public class ClassResolver {
|
||||
result.add(JetStandardClasses.getAnyType());
|
||||
}
|
||||
else {
|
||||
ClassDescriptor object = javaDescriptorResolver.resolveJavaLangObject();
|
||||
ClassDescriptor object = resolveJavaLangObject();
|
||||
if (object != null) {
|
||||
result.add(object.getDefaultType());
|
||||
}
|
||||
@@ -432,6 +433,15 @@ public class ClassResolver {
|
||||
return ns;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ClassDescriptor resolveJavaLangObject() {
|
||||
ClassDescriptor clazz = resolveClass(JavaDescriptorResolver.OBJECT_FQ_NAME, DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
||||
if (clazz == null) {
|
||||
// TODO: warning
|
||||
}
|
||||
return clazz;
|
||||
}
|
||||
|
||||
public static ClassKind getClassKind(@NotNull PsiClass psiClass, @NotNull JetClassAnnotation jetClassAnnotation) {
|
||||
if (psiClass.isInterface()) {
|
||||
return (psiClass.isAnnotationType() ? ClassKind.ANNOTATION_CLASS : ClassKind.TRAIT);
|
||||
|
||||
+42
@@ -43,6 +43,48 @@ import java.util.*;
|
||||
|
||||
public final class PropertiesResolver {
|
||||
|
||||
public Set<VariableDescriptor> resolveFieldGroupByName(
|
||||
@NotNull Name fieldName,
|
||||
@NotNull ResolverScopeData scopeData
|
||||
) {
|
||||
|
||||
PsiClass psiClass = scopeData.getPsiClass();
|
||||
DescriptorResolverUtils.getResolverScopeData(scopeData);
|
||||
|
||||
NamedMembers namedMembers = scopeData.getNamedMembersMap().get(fieldName);
|
||||
if (namedMembers == null) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
//noinspection ConstantConditions
|
||||
String qualifiedName = psiClass == null ? scopeData.getPsiPackage().getQualifiedName() : psiClass.getQualifiedName();
|
||||
resolveNamedGroupProperties(scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, fieldName,
|
||||
"class or namespace " + qualifiedName);
|
||||
|
||||
return namedMembers.getPropertyDescriptors();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<VariableDescriptor> resolveFieldGroup(@NotNull ResolverScopeData scopeData) {
|
||||
DescriptorResolverUtils.getResolverScopeData(scopeData);
|
||||
final PsiClass psiClass = scopeData.getPsiClass();
|
||||
assert psiClass != null;
|
||||
|
||||
Set<VariableDescriptor> descriptors = Sets.newHashSet();
|
||||
Map<Name, NamedMembers> membersForProperties = scopeData.getNamedMembersMap();
|
||||
for (Map.Entry<Name, NamedMembers> entry : membersForProperties.entrySet()) {
|
||||
NamedMembers namedMembers = entry.getValue();
|
||||
Name propertyName = entry.getKey();
|
||||
|
||||
resolveNamedGroupProperties(
|
||||
scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, propertyName,
|
||||
"class or namespace " + psiClass.getQualifiedName());
|
||||
descriptors.addAll(namedMembers.getPropertyDescriptors());
|
||||
}
|
||||
|
||||
return descriptors;
|
||||
}
|
||||
|
||||
private static class GroupingValue {
|
||||
PropertyAccessorData getter;
|
||||
PropertyAccessorData setter;
|
||||
|
||||
Reference in New Issue
Block a user