Static methods supported
This commit is contained in:
committed by
Evgeny Gerashchenko
parent
10d971bc7a
commit
7362f69a62
+22
-3
@@ -36,6 +36,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.di.InjectorForJavaSemanticServices;
|
import org.jetbrains.jet.di.InjectorForJavaSemanticServices;
|
||||||
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.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -121,11 +122,29 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
|||||||
assert qualifiedName != null : "Trying to get line markers for anonymous or local class " + containingClass.getText();
|
assert qualifiedName != null : "Trying to get line markers for anonymous or local class " + containingClass.getText();
|
||||||
|
|
||||||
FqName classFqName = new FqName(qualifiedName);
|
FqName classFqName = new FqName(qualifiedName);
|
||||||
|
JetScope memberScope = getScopeForMember(javaDescriptorResolver, classFqName, member);
|
||||||
|
|
||||||
ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName);
|
return getDescriptorForMember(member, memberScope, bindingContext);
|
||||||
assert klass != null : " Couldn't find class " + classFqName;
|
}
|
||||||
|
|
||||||
return getDescriptorForMember(member, klass.getDefaultType().getMemberScope(), bindingContext);
|
@NotNull
|
||||||
|
private static JetScope getScopeForMember(
|
||||||
|
@NotNull JavaDescriptorResolver javaDescriptorResolver,
|
||||||
|
@NotNull FqName classFqName,
|
||||||
|
@NotNull PsiMember member
|
||||||
|
) {
|
||||||
|
if (member.hasModifierProperty(PsiModifier.STATIC)) {
|
||||||
|
NamespaceDescriptor packageDescriptor = javaDescriptorResolver.resolveNamespace(classFqName);
|
||||||
|
assert packageDescriptor != null : "No package descriptor for Java class " + classFqName + " that has a static member " + member;
|
||||||
|
|
||||||
|
return packageDescriptor.getMemberScope();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName);
|
||||||
|
assert klass != null : " Couldn't find class " + classFqName;
|
||||||
|
|
||||||
|
return klass.getDefaultType().getMemberScope();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
Reference in New Issue
Block a user