Fix problems with nulls on abstract classes from jdk
This commit is contained in:
committed by
Nikolay Krasko
parent
511e3d9cd7
commit
98eefd0f1c
@@ -37,13 +37,11 @@ import javax.swing.*;
|
||||
public class DescriptorClassMember implements ClassMemberWithElement {
|
||||
|
||||
public static final String NO_PARENT_FOR = "No parent for ";
|
||||
|
||||
@NotNull
|
||||
private final DeclarationDescriptor myDescriptor;
|
||||
@NotNull
|
||||
private final PsiElement myPsiElement;
|
||||
|
||||
public DescriptorClassMember(@NotNull PsiElement element, @NotNull DeclarationDescriptor descriptor) {
|
||||
public DescriptorClassMember(PsiElement element, @NotNull DeclarationDescriptor descriptor) {
|
||||
myPsiElement = element;
|
||||
myDescriptor = descriptor;
|
||||
}
|
||||
@@ -51,16 +49,15 @@ public class DescriptorClassMember implements ClassMemberWithElement {
|
||||
@Override
|
||||
public MemberChooserObject getParentNodeDelegate() {
|
||||
final DeclarationDescriptor parent = myDescriptor.getContainingDeclaration();
|
||||
PsiElement declaration;
|
||||
PsiElement declaration = null;
|
||||
if (myPsiElement instanceof JetDeclaration) {
|
||||
// kotlin
|
||||
declaration = PsiTreeUtil.getStubOrPsiParentOfType(myPsiElement, JetNamedDeclaration.class);
|
||||
}
|
||||
else {
|
||||
else if (myPsiElement != null) {
|
||||
// java or bytecode
|
||||
declaration = ((PsiMember) myPsiElement).getContainingClass();
|
||||
}
|
||||
assert declaration != null : NO_PARENT_FOR + myPsiElement;
|
||||
assert parent != null : NO_PARENT_FOR + myDescriptor;
|
||||
return new DescriptorClassMember(declaration, parent);
|
||||
}
|
||||
@@ -68,7 +65,7 @@ public class DescriptorClassMember implements ClassMemberWithElement {
|
||||
@Override
|
||||
public void renderTreeNode(SimpleColoredComponent component, JTree tree) {
|
||||
component.append(getText());
|
||||
if (myPsiElement.isValid()) {
|
||||
if (myPsiElement != null && myPsiElement.isValid()) {
|
||||
component.setIcon(myPsiElement.getIcon(0));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -52,9 +52,14 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
||||
) {
|
||||
List<DescriptorClassMember> members = new ArrayList<DescriptorClassMember>();
|
||||
for (CallableMemberDescriptor memberDescriptor : missingImplementations) {
|
||||
PsiElement psiElement = BindingContextUtils.descriptorToDeclaration(bindingContext, memberDescriptor);
|
||||
assert psiElement != null : "Can not find PsiElement for descriptor " + memberDescriptor;
|
||||
members.add(new DescriptorClassMember(psiElement, memberDescriptor));
|
||||
List<PsiElement> psiElements = BindingContextUtils.descriptorToDeclarations(bindingContext, memberDescriptor);
|
||||
DescriptorClassMember member;
|
||||
if (psiElements.isEmpty()) {
|
||||
member = new DescriptorClassMember(null, memberDescriptor);
|
||||
} else {
|
||||
member = new DescriptorClassMember(psiElements.get(0), memberDescriptor);
|
||||
}
|
||||
members.add(member);
|
||||
}
|
||||
return members;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user