Added class objects support in JetDecompiledData.
This commit is contained in:
@@ -176,8 +176,6 @@ public class JetDecompiledData {
|
|||||||
private void appendDescriptor(StringBuilder builder, DeclarationDescriptor descriptor, BindingContext bindingContext, String indent) {
|
private void appendDescriptor(StringBuilder builder, DeclarationDescriptor descriptor, BindingContext bindingContext, String indent) {
|
||||||
String decompiledComment = "/* " + PsiBundle.message("psi.decompiled.method.body") + " */";
|
String decompiledComment = "/* " + PsiBundle.message("psi.decompiled.method.body") + " */";
|
||||||
|
|
||||||
builder.append(indent);
|
|
||||||
|
|
||||||
int startOffset = builder.length();
|
int startOffset = builder.length();
|
||||||
builder.append(DescriptorRenderer.COMPACT.render(descriptor));
|
builder.append(DescriptorRenderer.COMPACT.render(descriptor));
|
||||||
int endOffset = builder.length();
|
int endOffset = builder.length();
|
||||||
@@ -189,15 +187,23 @@ public class JetDecompiledData {
|
|||||||
builder.append(" ").append(decompiledComment);
|
builder.append(" ").append(decompiledComment);
|
||||||
} else if (descriptor instanceof ClassDescriptor) {
|
} else if (descriptor instanceof ClassDescriptor) {
|
||||||
builder.append(" {\n");
|
builder.append(" {\n");
|
||||||
|
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
|
||||||
boolean firstPassed = false;
|
boolean firstPassed = false;
|
||||||
for (DeclarationDescriptor member : ((ClassDescriptor) descriptor).getDefaultType().getMemberScope().getAllDescriptors()) {
|
String subindent = indent + " ";
|
||||||
|
if (classDescriptor.getClassObjectDescriptor() != null) {
|
||||||
|
firstPassed = true;
|
||||||
|
builder.append(subindent).append("class ");
|
||||||
|
appendDescriptor(builder, classDescriptor.getClassObjectDescriptor(), bindingContext, subindent);
|
||||||
|
}
|
||||||
|
for (DeclarationDescriptor member : classDescriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
||||||
if (member.getContainingDeclaration() == descriptor) {
|
if (member.getContainingDeclaration() == descriptor) {
|
||||||
if (firstPassed) {
|
if (firstPassed) {
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
} else {
|
} else {
|
||||||
firstPassed = true;
|
firstPassed = true;
|
||||||
}
|
}
|
||||||
appendDescriptor(builder, member, bindingContext, indent + " ");
|
builder.append(subindent);
|
||||||
|
appendDescriptor(builder, member, bindingContext, subindent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
builder.append(indent).append("}");
|
builder.append(indent).append("}");
|
||||||
@@ -206,7 +212,9 @@ public class JetDecompiledData {
|
|||||||
|
|
||||||
builder.append("\n");
|
builder.append("\n");
|
||||||
PsiElement clsMember = bindingContext.get(BindingContext.DESCRIPTOR_TO_DECLARATION, descriptor);
|
PsiElement clsMember = bindingContext.get(BindingContext.DESCRIPTOR_TO_DECLARATION, descriptor);
|
||||||
myClsMembersToRanges.put(clsMember, new TextRange(startOffset, endOffset));
|
if (clsMember != null) {
|
||||||
|
myClsMembersToRanges.put(clsMember, new TextRange(startOffset, endOffset));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean hasAnnotation(PsiModifierListOwner modifierListOwner, String qualifiedName) {
|
private static boolean hasAnnotation(PsiModifierListOwner modifierListOwner, String qualifiedName) {
|
||||||
|
|||||||
Reference in New Issue
Block a user