From 8e69c06e5acfc8eda27aaf1528d04796a15ec833 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 30 Mar 2015 17:59:13 +0300 Subject: [PATCH] Adjust stub-builder, decompiler and renderer to new PSI structure of primary ctor --- .../stubs/elements/JetFileElementType.java | 2 +- .../AbstractDescriptorRendererTest.kt | 4 +- .../renderer/DescriptorRendererImpl.java | 23 ++++++- core/deserialization/src/descriptors.proto | 1 + .../stubBuilder/CallableClsStubBuilder.kt | 10 ++- .../stubBuilder/ClassClsStubBuilder.kt | 18 ++--- .../decompiler/stubBuilder/clsStubBuilding.kt | 37 +++++++---- .../decompiledText/Annotations.expected.kt | 2 +- .../AnnotationsOnPrimaryCtr.expected.kt | 8 +++ .../AnnotationsOnPrimaryCtr.kt | 5 ++ .../AnnotationsOnPrimaryCtr/Dependency.kt | 5 ++ .../ClassWithClassObject.expected.kt | 2 +- .../DependencyOnNestedClasses.expected.kt | 2 +- .../decompiledText/Enum.expected.kt | 2 +- .../decompiledText/FlexibleTypes.expected.kt | 2 +- .../decompiledText/FunctionTypes.expected.kt | 2 +- .../decompiledText/NestedClasses.expected.kt | 12 ++-- .../SecondaryConstructors.expected.kt | 2 +- .../decompiledText/SimpleClass.expected.kt | 2 +- .../navigation/decompiled/AbstractClass.kt | 2 +- .../ClassWithAbstractAndOpenMembers.kt | 2 +- .../decompiled/ClassWithConstructor.kt | 2 +- .../decompiler/navigation/decompiled/Color.kt | 2 +- .../navigation/decompiled/SimpleClass.kt | 2 +- .../navigation/decompiled/SimpleTraitImpl.kt | 2 +- .../decompiled/WithInnerAndObject.kt | 4 +- .../decompiled/WithTraitClassObject.kt | 2 +- .../AnnotationClass/AnnotationClass.txt | 24 +++---- .../stubBuilder/Annotations/Annotations.kt | 3 +- .../stubBuilder/Annotations/Annotations.txt | 66 ++++++++++++++----- .../stubBuilder/ClassMembers/ClassMembers.txt | 54 +++++++-------- .../stubBuilder/ClassObject/ClassObject.txt | 32 ++++++--- .../stubBuilder/DataClass/DataClass.txt | 24 +++---- .../stubBuilder/Delegation/Delegation.txt | 22 ++++--- .../DependencyOnNestedClasses.txt | 4 +- .../decompiler/stubBuilder/Enum/Enum.txt | 4 +- .../FlexibleTypes/FlexibleTypes.txt | 4 +- .../InheritingClasses/InheritingClasses.txt | 62 ++++++++++++----- .../stubBuilder/LocalClass/LocalClass.txt | 4 +- .../NestedClasses/NestedClasses.txt | 24 +++++-- .../stubBuilder/Objects/Objects.txt | 4 +- .../PrivateToThis/PrivateToThis.txt | 4 +- .../SecondaryConstructors.txt | 14 ++-- .../TypeBoundsAndDelegationSpecifiers.txt | 4 +- .../stubBuilder/TypeParams/TypeParams.txt | 4 +- .../decompiler/stubBuilder/Types/Types.txt | 4 +- .../stubs/AnnotationsOnPrimaryCtr.expected | 23 +++++++ .../testData/stubs/AnnotationsOnPrimaryCtr.kt | 1 + .../stubs/NotStorePropertiesFrom.expected | 3 +- .../stubs/ParametersWithFqName.expected | 27 ++++---- .../stubs/SecondaryConstructors.expected | 11 ++-- .../DecompiledTextTestGenerated.java | 6 ++ .../idea/stubs/StubBuilderTestGenerated.java | 6 ++ 53 files changed, 399 insertions(+), 198 deletions(-) create mode 100644 idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr.expected.kt create mode 100644 idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/AnnotationsOnPrimaryCtr.kt create mode 100644 idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/Dependency.kt create mode 100644 idea/testData/stubs/AnnotationsOnPrimaryCtr.expected create mode 100644 idea/testData/stubs/AnnotationsOnPrimaryCtr.kt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java index f6b5509e1a9..aadd6ab862e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java @@ -36,7 +36,7 @@ import org.jetbrains.kotlin.psi.stubs.impl.KotlinFileStubImpl; import java.io.IOException; public class JetFileElementType extends IStubFileElementType { - public static final int STUB_VERSION = 40; + public static final int STUB_VERSION = 41; private static final String NAME = "kotlin.FILE"; diff --git a/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt b/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt index 287374d5abb..bf71d051f49 100644 --- a/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt @@ -77,8 +77,8 @@ public abstract class AbstractDescriptorRendererTest : KotlinTestWithEnvironment is JetFunctionType -> return is JetNamedFunction -> addCorrespondingParameterDescriptor(getDescriptor(declaringElement, resolveSession) as FunctionDescriptor, parameter) - is JetClass -> { - val jetClass: JetClass = declaringElement + is JetPrimaryConstructor -> { + val jetClass: JetClass = declaringElement.getContainingClass() val classDescriptor = getDescriptor(jetClass, resolveSession) as ClassDescriptor addCorrespondingParameterDescriptor(classDescriptor.getUnsubstitutedPrimaryConstructor(), parameter) } diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java index 32324e7c74d..1a77e3998f2 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java @@ -538,15 +538,33 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } private void renderAnnotations(@NotNull Annotated annotated, @NotNull StringBuilder builder) { + renderAnnotations(annotated, builder, false); + } + + private void renderAnnotations(@NotNull Annotated annotated, @NotNull StringBuilder builder, boolean needBrackets) { if (!modifiers.contains(Modifier.ANNOTATIONS)) return; + + StringBuilder annotationsBuilder = new StringBuilder(); for (AnnotationDescriptor annotation : annotated.getAnnotations()) { ClassDescriptor annotationClass = (ClassDescriptor) annotation.getType().getConstructor().getDeclarationDescriptor(); assert annotationClass != null; if (!excludedAnnotationClasses.contains(DescriptorUtils.getFqNameSafe(annotationClass))) { - builder.append(renderAnnotation(annotation)).append(" "); + annotationsBuilder.append(renderAnnotation(annotation)).append(" "); } } + + if (!needBrackets) { + builder.append(annotationsBuilder); + } + else if (annotationsBuilder.length() > 0) { + // remove last whitespace + annotationsBuilder.setLength(annotationsBuilder.length() - 1); + + builder.append("["); + builder.append(annotationsBuilder); + builder.append("] "); + } } @Override @@ -972,6 +990,9 @@ public class DescriptorRendererImpl implements DescriptorRenderer { if (!klass.getKind().isSingleton() && classWithPrimaryConstructor) { ConstructorDescriptor primaryConstructor = klass.getUnsubstitutedPrimaryConstructor(); if (primaryConstructor != null) { + builder.append(" "); + renderAnnotations(primaryConstructor, builder, true); + renderVisibility(primaryConstructor.getVisibility(), builder); renderValueParameters(primaryConstructor, builder); } } diff --git a/core/deserialization/src/descriptors.proto b/core/deserialization/src/descriptors.proto index 757e1f6ea61..132caba62ff 100644 --- a/core/deserialization/src/descriptors.proto +++ b/core/deserialization/src/descriptors.proto @@ -196,6 +196,7 @@ message Class { message PrimaryConstructor { // If this field is present, it contains serialized data for the primary constructor. // Otherwise it's default and can be created manually upon deserialization + // Note: currently only objects have default primary constructor optional Callable data = 1; } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/CallableClsStubBuilder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/CallableClsStubBuilder.kt index 6103a6d6e46..b3e789c096a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/CallableClsStubBuilder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/CallableClsStubBuilder.kt @@ -20,8 +20,10 @@ import com.intellij.psi.PsiElement import com.intellij.psi.stubs.StubElement import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.MODALITY import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.VISIBILITY +import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.psi.JetSecondaryConstructor import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes +import org.jetbrains.kotlin.psi.stubs.impl.KotlinClassStubImpl import org.jetbrains.kotlin.psi.stubs.impl.KotlinFunctionStubImpl import org.jetbrains.kotlin.psi.stubs.impl.KotlinPlaceHolderStubImpl import org.jetbrains.kotlin.psi.stubs.impl.KotlinPropertyStubImpl @@ -66,6 +68,7 @@ private class CallableClsStubBuilder( private val isTopLevel: Boolean get() = protoContainer.packageFqName != null private val callableKind = Flags.CALLABLE_KIND[callableProto.getFlags()] private val isConstructor = callableKind == ProtoBuf.Callable.CallableKind.CONSTRUCTOR + private val isPrimaryConstructor = isConstructor && parent is KotlinClassStubImpl private val callableStub = doCreateCallableStub() fun build() { @@ -101,7 +104,7 @@ private class CallableClsStubBuilder( val annotationIds = c.components.annotationLoader.loadCallableAnnotations( protoContainer, callableProto, c.nameResolver, callableProto.annotatedCallableKind ) - createAnnotationStubs(annotationIds, modifierListStubImpl) + createAnnotationStubs(annotationIds, modifierListStubImpl, needWrappingAnnotationEntries = isPrimaryConstructor) } private fun doCreateCallableStub(): StubElement { @@ -137,7 +140,10 @@ private class CallableClsStubBuilder( ) } ProtoBuf.Callable.CallableKind.CONSTRUCTOR -> { - KotlinPlaceHolderStubImpl(parent, JetStubElementTypes.SECONDARY_CONSTRUCTOR) + if (isPrimaryConstructor) + KotlinPlaceHolderStubImpl(parent, JetStubElementTypes.PRIMARY_CONSTRUCTOR) + else + KotlinPlaceHolderStubImpl(parent, JetStubElementTypes.SECONDARY_CONSTRUCTOR) } else -> throw IllegalStateException("Unknown callable kind $callableKind") } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt index b1629d88c19..400f3b3528b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt @@ -25,10 +25,7 @@ import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.VISIBIL import org.jetbrains.kotlin.lexer.JetModifierKeywordToken import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.psi.JetClassBody -import org.jetbrains.kotlin.psi.JetDelegationSpecifierList -import org.jetbrains.kotlin.psi.JetDelegatorToSuperClass -import org.jetbrains.kotlin.psi.JetParameterList +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.stubs.elements.JetClassElementType import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes import org.jetbrains.kotlin.psi.stubs.impl.KotlinClassStubImpl @@ -139,15 +136,12 @@ private class ClassClsStubBuilder( private fun createConstructorStub() { if (!isClass() || !classProto.hasPrimaryConstructor()) return - val primaryConstructorProto = classProto.getPrimaryConstructor() - if (primaryConstructorProto.hasData()) { - typeStubBuilder.createValueParameterListStub(classOrObjectStub, primaryConstructorProto.getData(), ProtoContainer(classProto, null)) - } - else { - //default empty constructor - KotlinPlaceHolderStubImpl(classOrObjectStub, JetStubElementTypes.VALUE_PARAMETER_LIST) - } + + assert(classProto.getPrimaryConstructor().hasData(), + "Primary constructor in class is always non-default, so data should not be empty") + + createCallableStub(classOrObjectStub, primaryConstructorProto.getData(), c, ProtoContainer(classProto, null)) } private fun createDelegationSpecifierList() { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt index 293218b103c..09b50b51a83 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt @@ -25,10 +25,7 @@ import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.JetConstructorCalleeExpression -import org.jetbrains.kotlin.psi.JetDotQualifiedExpression -import org.jetbrains.kotlin.psi.JetPackageDirective -import org.jetbrains.kotlin.psi.JetTypeReference +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.stubs.KotlinUserTypeStub import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes import org.jetbrains.kotlin.psi.stubs.impl.* @@ -171,16 +168,28 @@ fun createModifierListStub( ) } -fun createAnnotationStubs(annotationIds: List, modifierList: KotlinModifierListStubImpl) = annotationIds.forEach { - annotationClassId -> - val annotationEntryStubImpl = KotlinAnnotationEntryStubImpl( - modifierList, - shortName = annotationClassId.getShortClassName().ref(), - hasValueArguments = false - ) - val constructorCallee = KotlinPlaceHolderStubImpl(annotationEntryStubImpl, JetStubElementTypes.CONSTRUCTOR_CALLEE) - val typeReference = KotlinPlaceHolderStubImpl(constructorCallee, JetStubElementTypes.TYPE_REFERENCE) - createStubForTypeName(annotationClassId, typeReference) +fun createAnnotationStubs( + annotationIds: List, + modifierList: KotlinModifierListStubImpl, + needWrappingAnnotationEntries: Boolean = false +) { + if (annotationIds.isEmpty()) return + + val entriesParent = + if (needWrappingAnnotationEntries) KotlinPlaceHolderStubImpl(modifierList, JetStubElementTypes.ANNOTATION) + else modifierList + + annotationIds.forEach { + annotationClassId -> + val annotationEntryStubImpl = KotlinAnnotationEntryStubImpl( + entriesParent, + shortName = annotationClassId.getShortClassName().ref(), + hasValueArguments = false + ) + val constructorCallee = KotlinPlaceHolderStubImpl(annotationEntryStubImpl, JetStubElementTypes.CONSTRUCTOR_CALLEE) + val typeReference = KotlinPlaceHolderStubImpl(constructorCallee, JetStubElementTypes.TYPE_REFERENCE) + createStubForTypeName(annotationClassId, typeReference) + } } val ProtoBuf.Callable.annotatedCallableKind: AnnotatedCallableKind diff --git a/idea/testData/decompiler/decompiledText/Annotations.expected.kt b/idea/testData/decompiler/decompiledText/Annotations.expected.kt index 122ea1053fb..4604db37570 100644 --- a/idea/testData/decompiler/decompiledText/Annotations.expected.kt +++ b/idea/testData/decompiler/decompiledText/Annotations.expected.kt @@ -3,7 +3,7 @@ package test -kotlin.data dependency.A dependency.B dependency.C internal final class Annotations() { +kotlin.data dependency.A dependency.B dependency.C internal final class Annotations public () { kotlin.inline dependency.A dependency.B dependency.C internal final val p: kotlin.Int /* compiled code */ kotlin.inline dependency.A dependency.B dependency.C internal final fun f(dependency.A dependency.B dependency.C kotlin.deprecated i: kotlin.Int): kotlin.Unit { /* compiled code */ } diff --git a/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr.expected.kt b/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr.expected.kt new file mode 100644 index 00000000000..8f3724d2538 --- /dev/null +++ b/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr.expected.kt @@ -0,0 +1,8 @@ +// IntelliJ API Decompiler stub source generated from a class file +// Implementation of methods is not available + +package test + +internal final class AnnotationsOnPrimaryCtr [dependency.A dependency.B dependency.C] private () { +} + diff --git a/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/AnnotationsOnPrimaryCtr.kt b/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/AnnotationsOnPrimaryCtr.kt new file mode 100644 index 00000000000..123cac429dd --- /dev/null +++ b/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/AnnotationsOnPrimaryCtr.kt @@ -0,0 +1,5 @@ +package test + +import dependency.* + +class AnnotationsOnPrimaryCtr [A("a")] private [B(1) C] () diff --git a/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/Dependency.kt b/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/Dependency.kt new file mode 100644 index 00000000000..2142cdf131e --- /dev/null +++ b/idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/Dependency.kt @@ -0,0 +1,5 @@ +package dependency + +annotation class A(val s: String) +annotation class B(val i: Int) +annotation class C diff --git a/idea/testData/decompiler/decompiledText/ClassWithClassObject.expected.kt b/idea/testData/decompiler/decompiledText/ClassWithClassObject.expected.kt index 1af8e45eb73..1ab2b0f5020 100644 --- a/idea/testData/decompiler/decompiledText/ClassWithClassObject.expected.kt +++ b/idea/testData/decompiler/decompiledText/ClassWithClassObject.expected.kt @@ -3,7 +3,7 @@ package test -internal final class ClassWithClassObject() { +internal final class ClassWithClassObject public () { internal companion object { internal final val a: test.A /* compiled code */ diff --git a/idea/testData/decompiler/decompiledText/DependencyOnNestedClasses.expected.kt b/idea/testData/decompiler/decompiledText/DependencyOnNestedClasses.expected.kt index dec5f1c4c6a..240f9011e1f 100644 --- a/idea/testData/decompiler/decompiledText/DependencyOnNestedClasses.expected.kt +++ b/idea/testData/decompiler/decompiledText/DependencyOnNestedClasses.expected.kt @@ -3,6 +3,6 @@ package test -public final class DependencyOnNestedClasses() : dependency.D.Nested { +public final class DependencyOnNestedClasses public () : dependency.D.Nested { internal final fun f(nc: dependency.D.Companion.NestedInClassObject, i: dependency.D.Inner, ii: dependency.D.Inner.Inner, nn: dependency.D.Nested.Nested): dependency.D.Nested { /* compiled code */ } } \ No newline at end of file diff --git a/idea/testData/decompiler/decompiledText/Enum.expected.kt b/idea/testData/decompiler/decompiledText/Enum.expected.kt index c6035bd88b7..01ce94c5ac3 100644 --- a/idea/testData/decompiler/decompiledText/Enum.expected.kt +++ b/idea/testData/decompiler/decompiledText/Enum.expected.kt @@ -3,7 +3,7 @@ package test -public final enum class Enum() : kotlin.Enum, dependency.Tr { +public final enum class Enum private () : kotlin.Enum, dependency.Tr { ONE TWO diff --git a/idea/testData/decompiler/decompiledText/FlexibleTypes.expected.kt b/idea/testData/decompiler/decompiledText/FlexibleTypes.expected.kt index 97d2e4908d8..9013c582b1f 100644 --- a/idea/testData/decompiler/decompiledText/FlexibleTypes.expected.kt +++ b/idea/testData/decompiler/decompiledText/FlexibleTypes.expected.kt @@ -3,7 +3,7 @@ package test -internal abstract class FlexibleTypes() { +internal abstract class FlexibleTypes public () { internal abstract val p: kotlin.Int /* platform type */ internal abstract fun collection(): kotlin.List /* platform type */ diff --git a/idea/testData/decompiler/decompiledText/FunctionTypes.expected.kt b/idea/testData/decompiler/decompiledText/FunctionTypes.expected.kt index 80702157b78..ee453a5f00d 100644 --- a/idea/testData/decompiler/decompiledText/FunctionTypes.expected.kt +++ b/idea/testData/decompiler/decompiledText/FunctionTypes.expected.kt @@ -3,7 +3,7 @@ package test -internal final class FunctionTypes() { +internal final class FunctionTypes public () { public final fun (A.(A) -> A)?.bar(): kotlin.Unit { /* compiled code */ } public final fun ((IP) -> R).compose(f: (P1) -> IP): (P1) -> R { /* compiled code */ } diff --git a/idea/testData/decompiler/decompiledText/NestedClasses.expected.kt b/idea/testData/decompiler/decompiledText/NestedClasses.expected.kt index d987b06ba7f..e1c0b7a1b7d 100644 --- a/idea/testData/decompiler/decompiledText/NestedClasses.expected.kt +++ b/idea/testData/decompiler/decompiledText/NestedClasses.expected.kt @@ -3,25 +3,25 @@ package test -internal final class NestedClasses() { +internal final class NestedClasses public () { internal final fun f(): kotlin.Unit { /* compiled code */ } - public final inner class Inner() { + public final inner class Inner public () { internal final fun f(): kotlin.Unit { /* compiled code */ } - private final inner class II() { + private final inner class II public () { internal final fun f(): kotlin.Unit { /* compiled code */ } } } - private final class Nested() { + private final class Nested public () { internal final fun f(): kotlin.Unit { /* compiled code */ } - internal final inner class NI() { + internal final inner class NI public () { internal final fun f(): kotlin.Unit { /* compiled code */ } } - public final class NN() { + public final class NN public () { internal final fun f(): kotlin.Unit { /* compiled code */ } } } diff --git a/idea/testData/decompiler/decompiledText/SecondaryConstructors.expected.kt b/idea/testData/decompiler/decompiledText/SecondaryConstructors.expected.kt index ad7726a77c0..5d48e67f960 100644 --- a/idea/testData/decompiler/decompiledText/SecondaryConstructors.expected.kt +++ b/idea/testData/decompiler/decompiledText/SecondaryConstructors.expected.kt @@ -3,7 +3,7 @@ package test -internal final class SecondaryConstructors(x: kotlin.Boolean) { +internal final class SecondaryConstructors public (x: kotlin.Boolean) { test.anno public constructor(x: kotlin.String) { /* compiled code */ } private constructor(x: kotlin.Int) { /* compiled code */ } diff --git a/idea/testData/decompiler/decompiledText/SimpleClass.expected.kt b/idea/testData/decompiler/decompiledText/SimpleClass.expected.kt index 30b5116a6a6..c30cdf601bb 100644 --- a/idea/testData/decompiler/decompiledText/SimpleClass.expected.kt +++ b/idea/testData/decompiler/decompiledText/SimpleClass.expected.kt @@ -3,7 +3,7 @@ package test -internal abstract class SimpleClass() : dependency.D, dependency.Tr, kotlin.List { +internal abstract class SimpleClass public () : dependency.D, dependency.Tr, kotlin.List { internal final val a: dependency.A /* compiled code */ public final var b: dependency.B /* compiled code */ diff --git a/idea/testData/decompiler/navigation/decompiled/AbstractClass.kt b/idea/testData/decompiler/navigation/decompiled/AbstractClass.kt index 3ae99c17225..e087cb01c79 100644 --- a/idea/testData/decompiler/navigation/decompiled/AbstractClass.kt +++ b/idea/testData/decompiler/navigation/decompiled/AbstractClass.kt @@ -3,5 +3,5 @@ package testData.libraries -[[public abstract class AbstractClass() { +[[public abstract class AbstractClass public () { }]] \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/decompiled/ClassWithAbstractAndOpenMembers.kt b/idea/testData/decompiler/navigation/decompiled/ClassWithAbstractAndOpenMembers.kt index 11afd259aed..c8b8838ac9c 100644 --- a/idea/testData/decompiler/navigation/decompiled/ClassWithAbstractAndOpenMembers.kt +++ b/idea/testData/decompiler/navigation/decompiled/ClassWithAbstractAndOpenMembers.kt @@ -3,7 +3,7 @@ package testData.libraries -[[public abstract class ClassWithAbstractAndOpenMembers() { +[[public abstract class ClassWithAbstractAndOpenMembers public () { [public abstract val abstractVal: kotlin.String] [public abstract var abstractVar: kotlin.String] diff --git a/idea/testData/decompiler/navigation/decompiled/ClassWithConstructor.kt b/idea/testData/decompiler/navigation/decompiled/ClassWithConstructor.kt index 957aefa70f6..2acdbeed5ea 100644 --- a/idea/testData/decompiler/navigation/decompiled/ClassWithConstructor.kt +++ b/idea/testData/decompiler/navigation/decompiled/ClassWithConstructor.kt @@ -3,6 +3,6 @@ package testData.libraries -[[public final class ClassWithConstructor(a: kotlin.String, b: kotlin.Any) { +[[public final class ClassWithConstructor public (a: kotlin.String, b: kotlin.Any) { [internal final val a: kotlin.String /* compiled code */] }]] diff --git a/idea/testData/decompiler/navigation/decompiled/Color.kt b/idea/testData/decompiler/navigation/decompiled/Color.kt index b64d21029b4..2f55da464de 100644 --- a/idea/testData/decompiler/navigation/decompiled/Color.kt +++ b/idea/testData/decompiler/navigation/decompiled/Color.kt @@ -3,7 +3,7 @@ package testData.libraries -[[public final enum class Color(rgb: kotlin.Int) : kotlin.Enum { +[[public final enum class Color private (rgb: kotlin.Int) : kotlin.Enum { [[RED]] [[GREEN]] diff --git a/idea/testData/decompiler/navigation/decompiled/SimpleClass.kt b/idea/testData/decompiler/navigation/decompiled/SimpleClass.kt index 38aa10ac2dd..5c86cc35a6a 100644 --- a/idea/testData/decompiler/navigation/decompiled/SimpleClass.kt +++ b/idea/testData/decompiler/navigation/decompiled/SimpleClass.kt @@ -3,5 +3,5 @@ package testData.libraries -[[public final class SimpleClass() { +[[public final class SimpleClass public () { }]] diff --git a/idea/testData/decompiler/navigation/decompiled/SimpleTraitImpl.kt b/idea/testData/decompiler/navigation/decompiled/SimpleTraitImpl.kt index 77e2f745d3a..c0116315d10 100644 --- a/idea/testData/decompiler/navigation/decompiled/SimpleTraitImpl.kt +++ b/idea/testData/decompiler/navigation/decompiled/SimpleTraitImpl.kt @@ -3,5 +3,5 @@ package testData.libraries -[[public final class SimpleTraitImpl() : testData.libraries.SimpleTrait { +[[public final class SimpleTraitImpl public () : testData.libraries.SimpleTrait { }]] diff --git a/idea/testData/decompiler/navigation/decompiled/WithInnerAndObject.kt b/idea/testData/decompiler/navigation/decompiled/WithInnerAndObject.kt index d08b44b546c..4bb3277b238 100644 --- a/idea/testData/decompiler/navigation/decompiled/WithInnerAndObject.kt +++ b/idea/testData/decompiler/navigation/decompiled/WithInnerAndObject.kt @@ -3,12 +3,12 @@ package testData.libraries -[[public final class WithInnerAndObject() { +[[public final class WithInnerAndObject public () { [[public companion object { [internal final fun foo(): kotlin.Unit { /* compiled code */ }] }]] - [[internal final class MyInner() { + [[internal final class MyInner public () { [internal trait MyInnerInner { [internal abstract fun innerInnerMethod(): kotlin.Unit] }] diff --git a/idea/testData/decompiler/navigation/decompiled/WithTraitClassObject.kt b/idea/testData/decompiler/navigation/decompiled/WithTraitClassObject.kt index 92e4ebbab8b..6e177ecf8ca 100644 --- a/idea/testData/decompiler/navigation/decompiled/WithTraitClassObject.kt +++ b/idea/testData/decompiler/navigation/decompiled/WithTraitClassObject.kt @@ -3,7 +3,7 @@ package testData.libraries -[[public final class WithTraitClassObject() { +[[public final class WithTraitClassObject public () { [[public companion object : testData.libraries.SimpleTrait { }]] }]] diff --git a/idea/testData/decompiler/stubBuilder/AnnotationClass/AnnotationClass.txt b/idea/testData/decompiler/stubBuilder/AnnotationClass/AnnotationClass.txt index c88fb522553..18c3caefe4c 100644 --- a/idea/testData/decompiler/stubBuilder/AnnotationClass/AnnotationClass.txt +++ b/idea/testData/decompiler/stubBuilder/AnnotationClass/AnnotationClass.txt @@ -5,19 +5,21 @@ PsiJetFileStubImpl[package=test.a] REFERENCE_EXPRESSION:[referencedName=a] CLASS:[fqName=test.a.AnnotationClass, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=AnnotationClass, superNames=[Annotation]] MODIFIER_LIST:[annotation public final] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=i] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=i] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=j] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=j] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=String] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=String] DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: diff --git a/idea/testData/decompiler/stubBuilder/Annotations/Annotations.kt b/idea/testData/decompiler/stubBuilder/Annotations/Annotations.kt index 51ed3efd062..7344aa8f96c 100644 --- a/idea/testData/decompiler/stubBuilder/Annotations/Annotations.kt +++ b/idea/testData/decompiler/stubBuilder/Annotations/Annotations.kt @@ -1,4 +1,3 @@ -//TODO: constructor modifiers are lost a public class Annotations private [a] (private [a] val c1: Int, [a] val c2: Int) { protected a fun f() { @@ -20,6 +19,8 @@ a public class Annotations private [a] (private [a] val c1: Int, [a] val c2: Int private b(E.E2) companion object { } + + class Nested [a] private [b(E.E1) b(E.E2)] () } annotation class a diff --git a/idea/testData/decompiler/stubBuilder/Annotations/Annotations.txt b/idea/testData/decompiler/stubBuilder/Annotations/Annotations.txt index 4297f6a894f..edbe1e0b23f 100644 --- a/idea/testData/decompiler/stubBuilder/Annotations/Annotations.txt +++ b/idea/testData/decompiler/stubBuilder/Annotations/Annotations.txt @@ -7,31 +7,39 @@ PsiJetFileStubImpl[package=] TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=a] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c1] - MODIFIER_LIST:[] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[private] + ANNOTATION: ANNOTATION_ENTRY:[hasValueArguments=false, shortName=a] CONSTRUCTOR_CALLEE: TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=a] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c1] + MODIFIER_LIST:[] + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=a] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=a] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c2] - MODIFIER_LIST:[] - ANNOTATION_ENTRY:[hasValueArguments=false, shortName=a] - CONSTRUCTOR_CALLEE: - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=a] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c2] + MODIFIER_LIST:[] + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=a] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=a] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] CLASS_BODY: OBJECT_DECLARATION:[fqName=Annotations.Companion, isCompanion=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=Companion, superNames=[]] MODIFIER_LIST:[private companion] @@ -145,3 +153,25 @@ PsiJetFileStubImpl[package=] USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=kotlin] REFERENCE_EXPRESSION:[referencedName=Unit] + CLASS:[fqName=Annotations.Nested, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=Nested, superNames=[]] + MODIFIER_LIST:[internal final] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[private] + ANNOTATION: + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=a] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=a] + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=b] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=b] + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=b] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=b] + VALUE_PARAMETER_LIST: + CLASS_BODY: diff --git a/idea/testData/decompiler/stubBuilder/ClassMembers/ClassMembers.txt b/idea/testData/decompiler/stubBuilder/ClassMembers/ClassMembers.txt index 2d6e5a0aad0..710e2aa55a5 100644 --- a/idea/testData/decompiler/stubBuilder/ClassMembers/ClassMembers.txt +++ b/idea/testData/decompiler/stubBuilder/ClassMembers/ClassMembers.txt @@ -3,37 +3,39 @@ PsiJetFileStubImpl[package=test] REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.ClassMembers, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=ClassMembers, superNames=[]] MODIFIER_LIST:[abstract internal] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p2] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p2] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=String] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p3] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=String] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p3] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p4] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p4] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p5] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=p5] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=String] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=String] CLASS_BODY: PROPERTY:[fqName=test.ClassMembers.abstractVar, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=true, name=abstractVar] MODIFIER_LIST:[abstract internal] diff --git a/idea/testData/decompiler/stubBuilder/ClassObject/ClassObject.txt b/idea/testData/decompiler/stubBuilder/ClassObject/ClassObject.txt index 4dac77e9f9f..a33c7c3fb30 100644 --- a/idea/testData/decompiler/stubBuilder/ClassObject/ClassObject.txt +++ b/idea/testData/decompiler/stubBuilder/ClassObject/ClassObject.txt @@ -5,7 +5,9 @@ PsiJetFileStubImpl[package=test.class_object] REFERENCE_EXPRESSION:[referencedName=class_object] CLASS:[fqName=test.class_object.ClassObject, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=ClassObject, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: OBJECT_DECLARATION:[fqName=test.class_object.ClassObject.Companion, isCompanion=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=Companion, superNames=[]] MODIFIER_LIST:[public companion] @@ -27,11 +29,15 @@ PsiJetFileStubImpl[package=test.class_object] REFERENCE_EXPRESSION:[referencedName=Int] CLASS:[fqName=test.class_object.ClassObject.Companion.A, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=A, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: CLASS:[fqName=test.class_object.ClassObject.Companion.A.B, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=B, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=test.class_object.ClassObject.Companion.A.B.i, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=i] MODIFIER_LIST:[internal final] @@ -65,21 +71,27 @@ PsiJetFileStubImpl[package=test.class_object] REFERENCE_EXPRESSION:[referencedName=Unit] CLASS:[fqName=test.class_object.ClassObject.B, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=B, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: OBJECT_DECLARATION:[fqName=test.class_object.ClassObject.B.Companion, isCompanion=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=Companion, superNames=[]] MODIFIER_LIST:[internal companion] CLASS_BODY: CLASS:[fqName=test.class_object.ClassObject.B.Companion.C, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=C, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: OBJECT_DECLARATION:[fqName=test.class_object.ClassObject.B.Companion.C.Companion, isCompanion=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=Companion, superNames=[]] MODIFIER_LIST:[internal companion] CLASS_BODY: CLASS:[fqName=test.class_object.ClassObject.B.Companion.C.Companion.D, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=D, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: OBJECT_DECLARATION:[fqName=test.class_object.ClassObject.B.Companion.C.Companion.D.Companion, isCompanion=true, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=Companion, superNames=[]] MODIFIER_LIST:[internal companion] @@ -101,7 +113,9 @@ PsiJetFileStubImpl[package=test.class_object] REFERENCE_EXPRESSION:[referencedName=Unit] CLASS:[fqName=test.class_object.ClassObject.B.Companion.C.Companion.D.Companion.Anno, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=Anno, superNames=[Annotation]] MODIFIER_LIST:[annotation internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -112,7 +126,9 @@ PsiJetFileStubImpl[package=test.class_object] CLASS_BODY: CLASS:[fqName=test.class_object.ClassObject.B.Companion.C.Companion.D.Companion.En, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=En, superNames=[Enum]] MODIFIER_LIST:[enum internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[private] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: diff --git a/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt b/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt index 7dcb6436094..8de7ac9672c 100644 --- a/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt +++ b/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt @@ -14,19 +14,21 @@ PsiJetFileStubImpl[package=a.b.c] USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=kotlin] REFERENCE_EXPRESSION:[referencedName=data] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=i] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=i] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=j] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=j] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=String] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=String] CLASS_BODY: PROPERTY:[fqName=a.b.c.DataClass.i, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=i] MODIFIER_LIST:[internal final] diff --git a/idea/testData/decompiler/stubBuilder/Delegation/Delegation.txt b/idea/testData/decompiler/stubBuilder/Delegation/Delegation.txt index 4bf3888c410..8c86bddc6e3 100644 --- a/idea/testData/decompiler/stubBuilder/Delegation/Delegation.txt +++ b/idea/testData/decompiler/stubBuilder/Delegation/Delegation.txt @@ -2,17 +2,19 @@ PsiJetFileStubImpl[package=] PACKAGE_DIRECTIVE: CLASS:[fqName=Delegation, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Delegation, superNames=[T]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=a] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=A] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=a] + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=A] DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: diff --git a/idea/testData/decompiler/stubBuilder/DependencyOnNestedClasses/DependencyOnNestedClasses.txt b/idea/testData/decompiler/stubBuilder/DependencyOnNestedClasses/DependencyOnNestedClasses.txt index e5b0dcd9dca..0278e3b067d 100644 --- a/idea/testData/decompiler/stubBuilder/DependencyOnNestedClasses/DependencyOnNestedClasses.txt +++ b/idea/testData/decompiler/stubBuilder/DependencyOnNestedClasses/DependencyOnNestedClasses.txt @@ -3,7 +3,9 @@ PsiJetFileStubImpl[package=test] REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.DependencyOnNestedClasses, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=DependencyOnNestedClasses, superNames=[Nested]] MODIFIER_LIST:[public final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: diff --git a/idea/testData/decompiler/stubBuilder/Enum/Enum.txt b/idea/testData/decompiler/stubBuilder/Enum/Enum.txt index 4e18790a3c5..94894d00caa 100644 --- a/idea/testData/decompiler/stubBuilder/Enum/Enum.txt +++ b/idea/testData/decompiler/stubBuilder/Enum/Enum.txt @@ -11,7 +11,9 @@ PsiJetFileStubImpl[package=a.b.c.test.enum] REFERENCE_EXPRESSION:[referencedName=enum] CLASS:[fqName=a.b.c.test.enum.Enum, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Enum, superNames=[Enum]] MODIFIER_LIST:[enum internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[private] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: diff --git a/idea/testData/decompiler/stubBuilder/FlexibleTypes/FlexibleTypes.txt b/idea/testData/decompiler/stubBuilder/FlexibleTypes/FlexibleTypes.txt index 6bf2642dcac..153e52efbbe 100644 --- a/idea/testData/decompiler/stubBuilder/FlexibleTypes/FlexibleTypes.txt +++ b/idea/testData/decompiler/stubBuilder/FlexibleTypes/FlexibleTypes.txt @@ -3,7 +3,9 @@ PsiJetFileStubImpl[package=test] REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.FlexibleTypes, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=FlexibleTypes, superNames=[]] MODIFIER_LIST:[abstract internal] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=test.FlexibleTypes.p, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=p] MODIFIER_LIST:[abstract internal] diff --git a/idea/testData/decompiler/stubBuilder/InheritingClasses/InheritingClasses.txt b/idea/testData/decompiler/stubBuilder/InheritingClasses/InheritingClasses.txt index 16f0dd53e62..39df88eda50 100644 --- a/idea/testData/decompiler/stubBuilder/InheritingClasses/InheritingClasses.txt +++ b/idea/testData/decompiler/stubBuilder/InheritingClasses/InheritingClasses.txt @@ -3,17 +3,21 @@ PsiJetFileStubImpl[package=a] REFERENCE_EXPRESSION:[referencedName=a] CLASS:[fqName=a.InheritingClasses, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=InheritingClasses, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: CLASS:[fqName=a.InheritingClasses.A, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=A, superNames=[C]] MODIFIER_LIST:[abstract internal] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=c] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Int] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Int] DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -63,7 +67,9 @@ PsiJetFileStubImpl[package=a] REFERENCE_EXPRESSION:[referencedName=Int] CLASS:[fqName=a.InheritingClasses.B, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=B, superNames=[A]] MODIFIER_LIST:[open internal] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -140,7 +146,9 @@ PsiJetFileStubImpl[package=a] CLASS_BODY: CLASS:[fqName=a.InheritingClasses.G, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=G, superNames=[B, C, D, E]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -184,19 +192,27 @@ PsiJetFileStubImpl[package=a] CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritAny, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=InheritAny, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritAny.ExplicitAny, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=ExplicitAny, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritAny.ImplicitAny, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=ImplicitAny, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritAny.OnlyTrait, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=OnlyTrait, superNames=[SomeTrait]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -211,7 +227,9 @@ PsiJetFileStubImpl[package=a] CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritAny.OnlyTraits, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=OnlyTraits, superNames=[SomeTrait, SomeTrait2]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -242,7 +260,9 @@ PsiJetFileStubImpl[package=a] CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritAny.TraitWithExplicitAny, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=TraitWithExplicitAny, superNames=[Any, SomeTrait]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -263,7 +283,9 @@ PsiJetFileStubImpl[package=a] CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritAny.TraitsWithExplicitAny, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=TraitsWithExplicitAny, superNames=[SomeTrait2, Any, SomeTrait]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -294,7 +316,9 @@ PsiJetFileStubImpl[package=a] CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritExtensionFunctionType, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=InheritExtensionFunctionType, superNames=[]] MODIFIER_LIST:[abstract internal] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: @@ -328,7 +352,9 @@ PsiJetFileStubImpl[package=a] CLASS_BODY: CLASS:[fqName=a.InheritingClasses.InheritFunctionType, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=InheritFunctionType, superNames=[]] MODIFIER_LIST:[abstract internal] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: diff --git a/idea/testData/decompiler/stubBuilder/LocalClass/LocalClass.txt b/idea/testData/decompiler/stubBuilder/LocalClass/LocalClass.txt index 0c0c419ff10..c70c4cfac53 100644 --- a/idea/testData/decompiler/stubBuilder/LocalClass/LocalClass.txt +++ b/idea/testData/decompiler/stubBuilder/LocalClass/LocalClass.txt @@ -3,7 +3,9 @@ PsiJetFileStubImpl[package=test] REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.LocalClass, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=LocalClass, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=test.LocalClass.bar, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=bar] MODIFIER_LIST:[private final] diff --git a/idea/testData/decompiler/stubBuilder/NestedClasses/NestedClasses.txt b/idea/testData/decompiler/stubBuilder/NestedClasses/NestedClasses.txt index 6f00e1d053d..cae873d4c80 100644 --- a/idea/testData/decompiler/stubBuilder/NestedClasses/NestedClasses.txt +++ b/idea/testData/decompiler/stubBuilder/NestedClasses/NestedClasses.txt @@ -5,7 +5,9 @@ PsiJetFileStubImpl[package=test] MODIFIER_LIST:[internal final] TYPE_PARAMETER_LIST: TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=TOuter] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=test.NestedClasses.c, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=c] MODIFIER_LIST:[internal final] @@ -29,7 +31,9 @@ PsiJetFileStubImpl[package=test] TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=TOuter] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: FUN:[fqName=test.NestedClasses.Inner.f, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isProbablyNothingType=false, isTopLevel=false, name=f] MODIFIER_LIST:[internal final] @@ -47,7 +51,9 @@ PsiJetFileStubImpl[package=test] MODIFIER_LIST:[inner private final] TYPE_PARAMETER_LIST: TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=TII] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: FUN:[fqName=test.NestedClasses.Inner.II.f, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isProbablyNothingType=false, isTopLevel=false, name=f] MODIFIER_LIST:[internal final] @@ -91,7 +97,9 @@ PsiJetFileStubImpl[package=test] MODIFIER_LIST:[private final] TYPE_PARAMETER_LIST: TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=TN] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=test.NestedClasses.Nested.c, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=c] MODIFIER_LIST:[internal final] @@ -119,7 +127,9 @@ PsiJetFileStubImpl[package=test] TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=TN] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: FUN:[fqName=test.NestedClasses.Nested.NI.f, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isProbablyNothingType=false, isTopLevel=false, name=f] MODIFIER_LIST:[internal final] @@ -141,7 +151,9 @@ PsiJetFileStubImpl[package=test] MODIFIER_LIST:[public final] TYPE_PARAMETER_LIST: TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=TNN] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=test.NestedClasses.Nested.NN.c, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=c] MODIFIER_LIST:[internal final] diff --git a/idea/testData/decompiler/stubBuilder/Objects/Objects.txt b/idea/testData/decompiler/stubBuilder/Objects/Objects.txt index d73fd187e04..dd78148505e 100644 --- a/idea/testData/decompiler/stubBuilder/Objects/Objects.txt +++ b/idea/testData/decompiler/stubBuilder/Objects/Objects.txt @@ -43,7 +43,9 @@ PsiJetFileStubImpl[package=] REFERENCE_EXPRESSION:[referencedName=Unit] CLASS:[fqName=Objects.NestedClass, isEnumEntry=false, isLocal=false, isTopLevel=false, isTrait=false, name=NestedClass, superNames=[]] MODIFIER_LIST:[open internal] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: OBJECT_DECLARATION:[fqName=Objects.OtherObject, isCompanion=false, isLocal=false, isObjectLiteral=false, isTopLevel=false, name=OtherObject, superNames=[NestedClass]] MODIFIER_LIST:[public] diff --git a/idea/testData/decompiler/stubBuilder/PrivateToThis/PrivateToThis.txt b/idea/testData/decompiler/stubBuilder/PrivateToThis/PrivateToThis.txt index b35aa4f9b34..ab1fb284dce 100644 --- a/idea/testData/decompiler/stubBuilder/PrivateToThis/PrivateToThis.txt +++ b/idea/testData/decompiler/stubBuilder/PrivateToThis/PrivateToThis.txt @@ -6,7 +6,9 @@ PsiJetFileStubImpl[package=p] TYPE_PARAMETER_LIST: TYPE_PARAMETER:[fqName=null, isInVariance=true, isOutVariance=false, name=I] MODIFIER_LIST:[in] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=p.PrivateToThis.bar, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=true, name=bar] MODIFIER_LIST:[private final] diff --git a/idea/testData/decompiler/stubBuilder/SecondaryConstructors/SecondaryConstructors.txt b/idea/testData/decompiler/stubBuilder/SecondaryConstructors/SecondaryConstructors.txt index d357671a09f..8404fb664fb 100644 --- a/idea/testData/decompiler/stubBuilder/SecondaryConstructors/SecondaryConstructors.txt +++ b/idea/testData/decompiler/stubBuilder/SecondaryConstructors/SecondaryConstructors.txt @@ -3,13 +3,15 @@ PsiJetFileStubImpl[package=test] REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.SecondaryConstructors, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=SecondaryConstructors, superNames=[]] MODIFIER_LIST:[internal final] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=x] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=x] + TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=kotlin] - REFERENCE_EXPRESSION:[referencedName=Boolean] + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=kotlin] + REFERENCE_EXPRESSION:[referencedName=Boolean] CLASS_BODY: SECONDARY_CONSTRUCTOR: MODIFIER_LIST:[public] diff --git a/idea/testData/decompiler/stubBuilder/TypeBoundsAndDelegationSpecifiers/TypeBoundsAndDelegationSpecifiers.txt b/idea/testData/decompiler/stubBuilder/TypeBoundsAndDelegationSpecifiers/TypeBoundsAndDelegationSpecifiers.txt index 67ce668ec5d..8d9e4932ffe 100644 --- a/idea/testData/decompiler/stubBuilder/TypeBoundsAndDelegationSpecifiers/TypeBoundsAndDelegationSpecifiers.txt +++ b/idea/testData/decompiler/stubBuilder/TypeBoundsAndDelegationSpecifiers/TypeBoundsAndDelegationSpecifiers.txt @@ -17,7 +17,9 @@ PsiJetFileStubImpl[package=test] USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=test] REFERENCE_EXPRESSION:[referencedName=T] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: DELEGATION_SPECIFIER_LIST: DELEGATOR_SUPER_CLASS: TYPE_REFERENCE: diff --git a/idea/testData/decompiler/stubBuilder/TypeParams/TypeParams.txt b/idea/testData/decompiler/stubBuilder/TypeParams/TypeParams.txt index 772c46a97d5..cf2fefc1f6f 100644 --- a/idea/testData/decompiler/stubBuilder/TypeParams/TypeParams.txt +++ b/idea/testData/decompiler/stubBuilder/TypeParams/TypeParams.txt @@ -45,7 +45,9 @@ PsiJetFileStubImpl[package=test] USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=kotlin] REFERENCE_EXPRESSION:[referencedName=Any] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: TYPE_CONSTRAINT_LIST: TYPE_CONSTRAINT:[isCompanionObjectConstraint=false] REFERENCE_EXPRESSION:[referencedName=T1] diff --git a/idea/testData/decompiler/stubBuilder/Types/Types.txt b/idea/testData/decompiler/stubBuilder/Types/Types.txt index 74c6321f3ab..cd631c37a2c 100644 --- a/idea/testData/decompiler/stubBuilder/Types/Types.txt +++ b/idea/testData/decompiler/stubBuilder/Types/Types.txt @@ -3,7 +3,9 @@ PsiJetFileStubImpl[package=test] REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.Types, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Types, superNames=[]] MODIFIER_LIST:[abstract internal] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[public] + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=test.Types.deepExtFunctionType, hasDelegate=false, hasDelegateExpression=false, hasInitializer=false, hasReceiverTypeRef=false, hasReturnTypeRef=true, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=deepExtFunctionType] MODIFIER_LIST:[abstract internal] diff --git a/idea/testData/stubs/AnnotationsOnPrimaryCtr.expected b/idea/testData/stubs/AnnotationsOnPrimaryCtr.expected new file mode 100644 index 00000000000..df174320b7c --- /dev/null +++ b/idea/testData/stubs/AnnotationsOnPrimaryCtr.expected @@ -0,0 +1,23 @@ +PsiJetFileStubImpl[package=] + PACKAGE_DIRECTIVE: + CLASS:[fqName=A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]] + PRIMARY_CONSTRUCTOR: + MODIFIER_LIST:[private] + ANNOTATION: + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Deprecated] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Deprecated] + ANNOTATION: + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Override] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Override] + ANNOTATION_ENTRY:[hasValueArguments=false, shortName=Deprecated] + CONSTRUCTOR_CALLEE: + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Deprecated] + VALUE_PARAMETER_LIST: diff --git a/idea/testData/stubs/AnnotationsOnPrimaryCtr.kt b/idea/testData/stubs/AnnotationsOnPrimaryCtr.kt new file mode 100644 index 00000000000..de7fd3e9959 --- /dev/null +++ b/idea/testData/stubs/AnnotationsOnPrimaryCtr.kt @@ -0,0 +1 @@ +class A [Deprecated] private [Override Deprecated] () diff --git a/idea/testData/stubs/NotStorePropertiesFrom.expected b/idea/testData/stubs/NotStorePropertiesFrom.expected index b2d980fc026..9923517a42f 100644 --- a/idea/testData/stubs/NotStorePropertiesFrom.expected +++ b/idea/testData/stubs/NotStorePropertiesFrom.expected @@ -1,7 +1,8 @@ PsiJetFileStubImpl[package=] PACKAGE_DIRECTIVE: CLASS:[fqName=Test, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=Test, superNames=[]] - VALUE_PARAMETER_LIST: + PRIMARY_CONSTRUCTOR: + VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=Test.test, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReceiverTypeRef=false, hasReturnTypeRef=false, isProbablyNothingType=false, isTopLevel=false, isVar=false, name=test] ANONYMOUS_INITIALIZER: diff --git a/idea/testData/stubs/ParametersWithFqName.expected b/idea/testData/stubs/ParametersWithFqName.expected index ef42a7b8e0f..5f65217a074 100644 --- a/idea/testData/stubs/ParametersWithFqName.expected +++ b/idea/testData/stubs/ParametersWithFqName.expected @@ -2,17 +2,18 @@ PsiJetFileStubImpl[package=test] PACKAGE_DIRECTIVE: REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.A, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=A, superNames=[]] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=test.A.b, hasDefaultValue=false, hasValOrVarNode=true, isMutable=false, name=b] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=Int] - VALUE_PARAMETER:[fqName=test.A.c, hasDefaultValue=false, hasValOrVarNode=true, isMutable=true, name=c] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=String] - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=justParam] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=Int] + PRIMARY_CONSTRUCTOR: + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=test.A.b, hasDefaultValue=false, hasValOrVarNode=true, isMutable=false, name=b] + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Int] + VALUE_PARAMETER:[fqName=test.A.c, hasDefaultValue=false, hasValOrVarNode=true, isMutable=true, name=c] + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=String] + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=justParam] + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Int] CLASS_BODY: diff --git a/idea/testData/stubs/SecondaryConstructors.expected b/idea/testData/stubs/SecondaryConstructors.expected index 3fa0ff7b24a..feefbd11212 100644 --- a/idea/testData/stubs/SecondaryConstructors.expected +++ b/idea/testData/stubs/SecondaryConstructors.expected @@ -2,11 +2,12 @@ PsiJetFileStubImpl[package=test] PACKAGE_DIRECTIVE: REFERENCE_EXPRESSION:[referencedName=test] CLASS:[fqName=test.SecondaryConstructors, isEnumEntry=false, isLocal=false, isTopLevel=true, isTrait=false, name=SecondaryConstructors, superNames=[]] - VALUE_PARAMETER_LIST: - VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=x] - TYPE_REFERENCE: - USER_TYPE:[isAbsoluteInRootPackage=false] - REFERENCE_EXPRESSION:[referencedName=Boolean] + PRIMARY_CONSTRUCTOR: + VALUE_PARAMETER_LIST: + VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVarNode=false, isMutable=false, name=x] + TYPE_REFERENCE: + USER_TYPE:[isAbsoluteInRootPackage=false] + REFERENCE_EXPRESSION:[referencedName=Boolean] CLASS_BODY: ANONYMOUS_INITIALIZER: SECONDARY_CONSTRUCTOR: diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextTestGenerated.java index fa302ae77ce..c08bbd15db1 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextTestGenerated.java @@ -44,6 +44,12 @@ public class DecompiledTextTestGenerated extends AbstractDecompiledTextTest { doTest(fileName); } + @TestMetadata("AnnotationsOnPrimaryCtr") + public void testAnnotationsOnPrimaryCtr() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/AnnotationsOnPrimaryCtr/"); + doTest(fileName); + } + @TestMetadata("ClassWithClassObject") public void testClassWithClassObject() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/ClassWithClassObject/"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/stubs/StubBuilderTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/stubs/StubBuilderTestGenerated.java index d0073362c1b..b70ec4c245b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/stubs/StubBuilderTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/stubs/StubBuilderTestGenerated.java @@ -60,6 +60,12 @@ public class StubBuilderTestGenerated extends AbstractStubBuilderTest { doTest(fileName); } + @TestMetadata("AnnotationsOnPrimaryCtr.kt") + public void testAnnotationsOnPrimaryCtr() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/stubs/AnnotationsOnPrimaryCtr.kt"); + doTest(fileName); + } + @TestMetadata("AnonymousObject.kt") public void testAnonymousObject() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/stubs/AnonymousObject.kt");