Use JavaDescriptorResolver#resolveClass(JavaClass) in KotlinSignatureInJavaMarkerProvider
This commit is contained in:
+13
-18
@@ -37,12 +37,12 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaBindingContext;
|
import org.jetbrains.jet.lang.resolve.java.JavaBindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassStaticsPackageFragmentDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaClassImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.plugin.JetIcons;
|
import org.jetbrains.jet.plugin.JetIcons;
|
||||||
@@ -137,8 +137,7 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
FqName classFqName = new FqName(qualifiedName);
|
JetScope memberScope = getScopeForMember(javaDescriptorResolver, member, containingClass);
|
||||||
JetScope memberScope = getScopeForMember(javaDescriptorResolver, classFqName, member);
|
|
||||||
|
|
||||||
if (memberScope == null) {
|
if (memberScope == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -149,24 +148,20 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private static JetScope getScopeForMember(
|
private static JetScope getScopeForMember(
|
||||||
@NotNull JavaDescriptorResolver javaDescriptorResolver,
|
@NotNull JavaDescriptorResolver javaDescriptorResolver,
|
||||||
@NotNull FqName classFqName,
|
@NotNull PsiMember member,
|
||||||
@NotNull PsiMember member
|
@NotNull PsiClass containingClass
|
||||||
) {
|
) {
|
||||||
|
ClassDescriptor klass = javaDescriptorResolver.resolveClass(new JavaClassImpl(containingClass));
|
||||||
|
if (!(klass instanceof JavaClassDescriptor)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
JavaClassDescriptor javaClassDescriptor = (JavaClassDescriptor) klass;
|
||||||
if (member.hasModifierProperty(PsiModifier.STATIC)) {
|
if (member.hasModifierProperty(PsiModifier.STATIC)) {
|
||||||
PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragment(classFqName);
|
JavaClassStaticsPackageFragmentDescriptor correspondingPackageFragment = javaClassDescriptor.getCorrespondingPackageFragment();
|
||||||
if (packageFragment == null) {
|
return correspondingPackageFragment != null ? correspondingPackageFragment.getMemberScope() : null;
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return packageFragment.getMemberScope();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName);
|
return javaClassDescriptor.getDefaultType().getMemberScope();
|
||||||
if (klass == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return klass.getDefaultType().getMemberScope();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user