diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index 2ff76873078..29eb635b6ac 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -32,7 +32,6 @@ import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserial import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver; -import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -56,7 +55,6 @@ public class InjectorForJavaDescriptorResolver { private final JavaNamespaceResolver javaNamespaceResolver; private final JavaSupertypeResolver javaSupertypeResolver; private final JavaConstructorResolver javaConstructorResolver; - private final JavaInnerClassResolver javaInnerClassResolver; private final JavaPropertyResolver javaPropertyResolver; public InjectorForJavaDescriptorResolver( @@ -79,13 +77,11 @@ public class InjectorForJavaDescriptorResolver { this.javaNamespaceResolver = new JavaNamespaceResolver(); this.javaSupertypeResolver = new JavaSupertypeResolver(); this.javaConstructorResolver = new JavaConstructorResolver(); - this.javaInnerClassResolver = new JavaInnerClassResolver(); this.javaPropertyResolver = new JavaPropertyResolver(); this.javaDescriptorResolver.setClassResolver(javaClassResolver); this.javaDescriptorResolver.setConstructorResolver(javaConstructorResolver); this.javaDescriptorResolver.setFunctionResolver(javaFunctionResolver); - this.javaDescriptorResolver.setInnerClassResolver(javaInnerClassResolver); this.javaDescriptorResolver.setNamespaceResolver(javaNamespaceResolver); this.javaDescriptorResolver.setPropertiesResolver(javaPropertyResolver); @@ -139,8 +135,6 @@ public class InjectorForJavaDescriptorResolver { javaConstructorResolver.setTypeTransformer(javaTypeTransformer); javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver); - javaInnerClassResolver.setClassResolver(javaClassResolver); - javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver); javaPropertyResolver.setTrace(bindingTrace); javaPropertyResolver.setTypeTransformer(javaTypeTransformer); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 4c09526153e..6c7da56a9c7 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -59,7 +59,6 @@ import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserial import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver; -import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -110,7 +109,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly private final JavaNamespaceResolver javaNamespaceResolver; private final JavaSupertypeResolver javaSupertypeResolver; private final JavaConstructorResolver javaConstructorResolver; - private final JavaInnerClassResolver javaInnerClassResolver; private final JavaPropertyResolver javaPropertyResolver; public InjectorForTopDownAnalyzerForJvm( @@ -162,7 +160,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly this.javaNamespaceResolver = new JavaNamespaceResolver(); this.javaSupertypeResolver = new JavaSupertypeResolver(); this.javaConstructorResolver = new JavaConstructorResolver(); - this.javaInnerClassResolver = new JavaInnerClassResolver(); this.javaPropertyResolver = new JavaPropertyResolver(); this.topDownAnalyzer.setBodyResolver(bodyResolver); @@ -203,7 +200,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly javaDescriptorResolver.setClassResolver(javaClassResolver); javaDescriptorResolver.setConstructorResolver(javaConstructorResolver); javaDescriptorResolver.setFunctionResolver(javaFunctionResolver); - javaDescriptorResolver.setInnerClassResolver(javaInnerClassResolver); javaDescriptorResolver.setNamespaceResolver(javaNamespaceResolver); javaDescriptorResolver.setPropertiesResolver(javaPropertyResolver); @@ -326,8 +322,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly javaConstructorResolver.setTypeTransformer(javaTypeTransformer); javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver); - javaInnerClassResolver.setClassResolver(javaClassResolver); - javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver); javaPropertyResolver.setTrace(bindingTrace); javaPropertyResolver.setTypeTransformer(javaTypeTransformer); 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 dd43b194a1c..d76a805f2e9 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 @@ -147,7 +147,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes private JavaConstructorResolver constructorResolver; private JavaFunctionResolver functionResolver; private JavaNamespaceResolver namespaceResolver; - private JavaInnerClassResolver innerClassResolver; @Inject public void setFunctionResolver(JavaFunctionResolver functionResolver) { @@ -174,11 +173,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes this.constructorResolver = constructorResolver; } - @Inject - public void setInnerClassResolver(JavaInnerClassResolver innerClassResolver) { - this.innerClassResolver = innerClassResolver; - } - @Nullable public ClassDescriptor resolveClass(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) { return classResolver.resolveClass(qualifiedName, searchRule); @@ -214,11 +208,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes return propertiesResolver.resolveFieldGroup(members, ownerDescriptor); } - @Nullable - public ClassDescriptor resolveClass(@NotNull FqName name, @NotNull DescriptorSearchRule searchRule, @NotNull PostponedTasks tasks) { - return classResolver.resolveClass(name, searchRule, tasks); - } - public static class ValueParameterDescriptors { private final JetType receiverType; private final List descriptors; @@ -252,9 +241,4 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes public Set resolveFunctionGroupForPackage(@NotNull NamedMembers members, @NotNull NamespaceDescriptor owner) { return functionResolver.resolveFunctionGroupForPackage(members, owner); } - - @NotNull - public List resolveInnerClasses(@NotNull PsiClass psiClass) { - return innerClassResolver.resolveInnerClasses(psiClass); - } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaInnerClassResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaInnerClassResolver.java deleted file mode 100644 index e07543b4486..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaInnerClassResolver.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.lang.resolve.java.resolver; - -import com.intellij.psi.PsiClass; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.ClassDescriptor; -import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; -import org.jetbrains.jet.lang.resolve.name.FqName; - -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.List; - -public final class JavaInnerClassResolver { - - private JavaClassResolver classResolver; - - public JavaInnerClassResolver() { - } - - @Inject - public void setClassResolver(JavaClassResolver classResolver) { - this.classResolver = classResolver; - } - - @NotNull - public List resolveInnerClasses(@NotNull PsiClass psiClass) { - PsiClass[] innerPsiClasses = psiClass.getInnerClasses(); - List result = new ArrayList(innerPsiClasses.length); - for (PsiClass innerPsiClass : innerPsiClasses) { - ClassDescriptor classDescriptor = resolveInnerClass(innerPsiClass); - result.add(classDescriptor); - } - return result; - } - - @NotNull - private ClassDescriptor resolveInnerClass(@NotNull PsiClass innerPsiClass) { - String name = innerPsiClass.getQualifiedName(); - assert name != null : "Inner class has no qualified name"; - ClassDescriptor classDescriptor = classResolver.resolveClass(new FqName(name), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); - assert classDescriptor != null : "Couldn't resolve class " + name; - return classDescriptor; - } -} \ No newline at end of file diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java index 3b9ffabed59..0ac3d378de9 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java @@ -21,11 +21,15 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor; +import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.PsiClassFinder; +import org.jetbrains.jet.lang.resolve.name.FqName; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.List; public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope { @@ -85,6 +89,22 @@ public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope if (staticMembersOfPsiClass) { return Collections.emptyList(); } - return javaDescriptorResolver.resolveInnerClasses(psiClass); + + PsiClass[] innerPsiClasses = psiClass.getInnerClasses(); + List result = new ArrayList(innerPsiClasses.length); + for (PsiClass innerPsiClass : innerPsiClasses) { + result.add(resolveInnerClass(innerPsiClass)); + } + return result; + } + + @NotNull + private ClassDescriptor resolveInnerClass(@NotNull PsiClass innerPsiClass) { + String name = innerPsiClass.getQualifiedName(); + assert name != null : "Inner class has no qualified name: " + innerPsiClass; + ClassDescriptor classDescriptor = javaDescriptorResolver.resolveClass(new FqName(name), + DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); + assert classDescriptor != null : "Couldn't resolve inner class " + name; + return classDescriptor; } }