From cae349d4f00e35ab58190fd03f2467a15864f367 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Sat, 6 Oct 2012 20:25:54 +0400 Subject: [PATCH] Move method from JavaDescriptorResolver to PropertiesResolver and ClassResolver --- .../resolve/java/JavaDescriptorResolver.java | 70 ++++--------------- .../resolve/java/resolver/ClassResolver.java | 14 +++- .../java/resolver/PropertiesResolver.java | 42 +++++++++++ 3 files changed, 69 insertions(+), 57 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index d4679f067a4..766481e2d5d 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -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 resolveFieldGroupByName(Name name, ResolverScopeData data) { + return propertiesResolver.resolveFieldGroupByName(name, data); + } + + public Set resolveFieldGroup(ResolverScopeData data) { + return propertiesResolver.resolveFieldGroup(data); + } + public static class ValueParameterDescriptors { private final JetType receiverType; private final List descriptors; @@ -232,46 +232,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } } - public Set 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 resolveFieldGroup(@NotNull ResolverScopeData scopeData) { - - DescriptorResolverUtils.getResolverScopeData(scopeData); - final PsiClass psiClass = scopeData.getPsiClass(); - assert psiClass != null; - - Set descriptors = Sets.newHashSet(); - Map membersForProperties = scopeData.getNamedMembersMap(); - for (Map.Entry 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 resolveFunctionGroup(@NotNull Name methodName, @NotNull ResolverScopeData scopeData) { return functionResolver.resolveFunctionGroup(methodName, scopeData); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java index f2adca868e2..3dc0a6cd7fd 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java @@ -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); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PropertiesResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PropertiesResolver.java index 6c0ec9824e8..407d452895f 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PropertiesResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PropertiesResolver.java @@ -43,6 +43,48 @@ import java.util.*; public final class PropertiesResolver { + public Set 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 resolveFieldGroup(@NotNull ResolverScopeData scopeData) { + DescriptorResolverUtils.getResolverScopeData(scopeData); + final PsiClass psiClass = scopeData.getPsiClass(); + assert psiClass != null; + + Set descriptors = Sets.newHashSet(); + Map membersForProperties = scopeData.getNamedMembersMap(); + for (Map.Entry 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;