Rendering primary constructor in decompiler.
#KT-3168 in progress
This commit is contained in:
@@ -39,6 +39,7 @@ import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
|
||||
import org.jetbrains.jet.lang.resolve.java.kt.JetClassAnnotation;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -50,6 +51,8 @@ public class DecompiledDataFactory {
|
||||
private static final String JET_CLASS = JetClass.class.getName();
|
||||
private static final String JET_METHOD = JetMethod.class.getName();
|
||||
private static final String DECOMPILED_COMMENT = "/* compiled code */";
|
||||
private static final DescriptorRenderer DESCRIPTOR_RENDERER =
|
||||
new DescriptorRendererBuilder().setWithDefinedIn(false).setClassWithPrimaryConstructor(true).build();
|
||||
|
||||
private final StringBuilder builder = new StringBuilder();
|
||||
private final ClsFileImpl clsFile;
|
||||
@@ -128,7 +131,7 @@ public class DecompiledDataFactory {
|
||||
|
||||
private void appendDescriptor(@NotNull DeclarationDescriptor descriptor, String indent) {
|
||||
int startOffset = builder.length();
|
||||
String renderedDescriptor = DescriptorRenderer.COMPACT_WITH_MODIFIERS.render(descriptor);
|
||||
String renderedDescriptor = DESCRIPTOR_RENDERER.render(descriptor);
|
||||
renderedDescriptor = renderedDescriptor.replace("= ...", "= " + DECOMPILED_COMMENT);
|
||||
builder.append(renderedDescriptor);
|
||||
int endOffset = builder.length();
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public abstract class AbstractClass {
|
||||
[public abstract class AbstractClass() {
|
||||
}]
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public abstract class ClassWithAbstractAndOpenMembers {
|
||||
[public abstract class ClassWithAbstractAndOpenMembers() {
|
||||
[public abstract val abstractVal : jet.String]
|
||||
|
||||
[public abstract var abstractVar : jet.String]
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// IntelliJ API Decompiler stub source generated from a class file
|
||||
// Implementation of methods is not available
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public final class ClassWithConstructor(a : jet.String, b : jet.Any) {
|
||||
[internal final val a : jet.String] /* compiled code */
|
||||
}]
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public final enum class Color : jet.Enum<testData.libraries.Color> {
|
||||
[public final enum class Color(rgb : jet.Int, p1 : jet.Int, p2 : jet.Int) : jet.Enum<testData.libraries.Color> {
|
||||
class object {
|
||||
[public final val BLUE : testData.libraries.Color] /* compiled code */
|
||||
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public final class SimpleClass {
|
||||
[public final class SimpleClass() {
|
||||
}]
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public final class SimpleTraitImpl : testData.libraries.SimpleTrait {
|
||||
[public final class SimpleTraitImpl() : testData.libraries.SimpleTrait {
|
||||
}]
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public final class WithInnerAndObject {
|
||||
[public final class WithInnerAndObject() {
|
||||
class object {
|
||||
[internal final fun foo() : Unit { /* compiled code */ }]
|
||||
}
|
||||
|
||||
[internal final class MyInner {
|
||||
[internal final class MyInner() {
|
||||
[internal trait MyInnerInner {
|
||||
[internal abstract fun innerInnerMethod() : Unit]
|
||||
}]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
package testData.libraries
|
||||
|
||||
[public final class WithTraitClassObject {
|
||||
[public final class WithTraitClassObject() {
|
||||
class object : testData.libraries.SimpleTrait {
|
||||
}
|
||||
}]
|
||||
|
||||
@@ -59,6 +59,8 @@ public abstract class ClassWithAbstractAndOpenMembers {
|
||||
}
|
||||
}
|
||||
|
||||
public class ClassWithConstructor(val a: String, b: Any)
|
||||
|
||||
public fun main(args : Array<String>) {
|
||||
}
|
||||
|
||||
|
||||
@@ -71,6 +71,10 @@ public class LibrariesWithoutSourcesTest extends AbstractLibrariesTest {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testClassWithConstructor() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
classFile = getClassFile();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user