From faa96ec7c068bd1bc4d03c9a8e6d229d32c5b3fe Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 14 Sep 2022 16:29:43 +0300 Subject: [PATCH] [AA LC] Don't create light methods if value class is present in signature ^KT-55788 Test `parameter_jvmInline.kt` is removed because now members with value classes are not included in light classes and don't have PSI representation --- ...alysisApiPsiTypeProviderTestGenerated.java | 6 -- ...alysisApiPsiTypeProviderTestGenerated.java | 6 -- ...alysisApiPsiTypeProviderTestGenerated.java | 6 -- ...alysisApiPsiTypeProviderTestGenerated.java | 6 -- .../forDeclaration/parameter_jvmInline.kt | 4 - .../forDeclaration/parameter_jvmInline.txt | 2 - .../symbol/classes/SymbolLightClassBase.kt | 17 +++- .../SymbolLightClassForClassOrObject.kt | 3 + .../classes/SymbolLightClassForFacade.kt | 1 + .../classes/SymbolLightClassForInterface.kt | 1 + .../symbol/classes/symbolLightClassUtils.kt | 28 +++++- ...htClassesByPsiForLibraryTestGenerated.java | 12 +++ ...ghtClassesByPsiForSourceTestGenerated.java | 12 +++ .../facades/valueClassInSignature.fir.java | 32 +++++++ .../facades/valueClassInSignature.java | 74 +++++++++++++++ .../facades/valueClassInSignature.kt | 33 +++++++ .../facades/valueClassInSignature.lib.java | 89 +++++++++++++++++++ .../valueClassInSignature.fir.java | 21 +++++ .../valueClassInSignature.java | 53 +++++++++++ .../lightClassByPsi/valueClassInSignature.kt | 24 +++++ .../valueClassInSignature.lib.java | 68 ++++++++++++++ 21 files changed, 466 insertions(+), 32 deletions(-) delete mode 100644 analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt delete mode 100644 analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.txt create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.fir.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.lib.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.fir.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.kt create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.lib.java diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/psiTypeProvider/Fe10IdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/psiTypeProvider/Fe10IdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java index a10854225f0..c291c1a8e3a 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/psiTypeProvider/Fe10IdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/psiTypeProvider/Fe10IdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java @@ -106,12 +106,6 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGene runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/localClass_memberFunction.kt"); } - @Test - @TestMetadata("parameter_jvmInline.kt") - public void testParameter_jvmInline() throws Exception { - runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt"); - } - @Test @TestMetadata("suspendFunctionValueParameterNoStdlib.kt") public void testSuspendFunctionValueParameterNoStdlib() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeDependentAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeDependentAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java index 4b856a17a4c..c437988896a 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeDependentAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeDependentAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java @@ -106,12 +106,6 @@ public class FirIdeDependentAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGe runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/localClass_memberFunction.kt"); } - @Test - @TestMetadata("parameter_jvmInline.kt") - public void testParameter_jvmInline() throws Exception { - runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt"); - } - @Test @TestMetadata("suspendFunctionValueParameterNoStdlib.kt") public void testSuspendFunctionValueParameterNoStdlib() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java index 8424df05278..328703836f0 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/psiTypeProvider/FirIdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java @@ -106,12 +106,6 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGener runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/localClass_memberFunction.kt"); } - @Test - @TestMetadata("parameter_jvmInline.kt") - public void testParameter_jvmInline() throws Exception { - runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt"); - } - @Test @TestMetadata("suspendFunctionValueParameterNoStdlib.kt") public void testSuspendFunctionValueParameterNoStdlib() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiTypeProvider/FirStandaloneNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiTypeProvider/FirStandaloneNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java index aad50f39efc..c333ea5d90e 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiTypeProvider/FirStandaloneNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiTypeProvider/FirStandaloneNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTestGenerated.java @@ -106,12 +106,6 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiPsiTypeProviderTe runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/localClass_memberFunction.kt"); } - @Test - @TestMetadata("parameter_jvmInline.kt") - public void testParameter_jvmInline() throws Exception { - runTest("analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt"); - } - @Test @TestMetadata("suspendFunctionValueParameterNoStdlib.kt") public void testSuspendFunctionValueParameterNoStdlib() throws Exception { diff --git a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt b/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt deleted file mode 100644 index 0bfa522d2fe..00000000000 --- a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.kt +++ /dev/null @@ -1,4 +0,0 @@ -@kotlin.jvm.JvmInline -value class MyInt(val value: Int) - -fun box(i : MyInt) {} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.txt b/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.txt deleted file mode 100644 index 9f7c3cfdee9..00000000000 --- a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/parameter_jvmInline.txt +++ /dev/null @@ -1,2 +0,0 @@ -KtType: MyInt -PsiType: PsiType:int diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt index 1d652fd090b..3adb74a27a7 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt @@ -18,6 +18,11 @@ import com.intellij.psi.scope.PsiScopeProcessor import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.PsiUtil import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.analysis.api.KtAnalysisSession +import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion +import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol +import org.jetbrains.kotlin.analysis.api.symbols.receiverType +import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionLikeSymbol import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment @@ -191,4 +196,14 @@ abstract class SymbolLightClassBase protected constructor(val ktModule: KtModule visitor.visitElement(this) } } -} \ No newline at end of file + + context(KtAnalysisSession) + protected fun KtCallableSymbol.hasTypeForValueClassInSignature(ignoreReturnType: Boolean = false): Boolean { + if (!ignoreReturnType && returnType.typeForValueClass) return true + if (receiverType?.typeForValueClass == true) return true + if (this is KtFunctionLikeSymbol) { + return valueParameters.any { it.returnType.typeForValueClass } + } + return false + } +} diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt index 5addbe9efe9..90635864a77 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt @@ -139,6 +139,9 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC it is KtKotlinPropertySymbol && it.origin == KtSymbolOrigin.SOURCE_MEMBER_GENERATED && it.name == StandardNames.ENUM_ENTRIES } } + .filterNot { + it.hasTypeForValueClassInSignature() + } val suppressStatic = isCompanionObject createMethods(visibleDeclarations, result, suppressStatic = suppressStatic) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt index 3a5d4f86ddb..63699874c36 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt @@ -97,6 +97,7 @@ class SymbolLightClassForFacade( if (callableSymbol !is KtSymbolWithVisibility) continue if ((callableSymbol as? KtAnnotatedSymbol)?.hasInlineOnlyAnnotation() == true) continue if (multiFileClass && callableSymbol.toPsiVisibilityForMember() == PsiModifier.PRIVATE) continue + if (callableSymbol.hasTypeForValueClassInSignature(ignoreReturnType = true)) continue yield(callableSymbol) } } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt index 413a7d51da2..41f3e3d160c 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt @@ -57,6 +57,7 @@ internal open class SymbolLightClassForInterface : SymbolLightClassForInterfaceO val visibleDeclarations = classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols() .filterNot { it is KtFunctionSymbol && it.visibility.isPrivateOrPrivateToThis() } + .filterNot { it.hasTypeForValueClassInSignature() } createMethods(visibleDeclarations, result) addMethodsFromCompanionIfNeeded(result, classOrObjectSymbol) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt index 83df6c531cb..c077f2dd5f4 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt @@ -290,6 +290,25 @@ internal fun SymbolLightClassBase.createPropertyAccessors( if (declaration.getter?.hasBody != true && declaration.setter?.hasBody != true && declaration.visibility.isPrivateOrPrivateToThis()) return if (declaration.hasJvmFieldAnnotation()) return + val propertyTypeIsValueClass = declaration.returnType.typeForValueClass + /* + * For top-level properties with value class in return type compiler mangles only setter + * + * @JvmInline + * value class Some(val value: String) + * + * var topLevelProp: Some = Some("1") + * + * Compiles to + * public final class FooKt { + * public final static getTopLevelProp()Ljava/lang/String; + * + * public final static setTopLevelProp-5lyY9Q4(Ljava/lang/String;)V + * + * private static Ljava/lang/String; topLevelProp + * } + */ + if (this !is SymbolLightClassForFacade && propertyTypeIsValueClass) return fun KtPropertyAccessorSymbol.needToCreateAccessor(siteTarget: AnnotationUseSiteTarget): Boolean { if (onlyJvmStatic && @@ -334,7 +353,7 @@ internal fun SymbolLightClassBase.createPropertyAccessors( } val setter = declaration.setter?.takeIf { - !isAnnotationType && it.needToCreateAccessor(AnnotationUseSiteTarget.PROPERTY_SETTER) + !isAnnotationType && it.needToCreateAccessor(AnnotationUseSiteTarget.PROPERTY_SETTER) && !propertyTypeIsValueClass } if (isMutable && setter != null) { @@ -602,3 +621,10 @@ internal fun SymbolLightClassBase.addPropertyBackingFields( // Then, regular member properties propertyGroups[false]?.forEach(::addPropertyBackingField) } + +context(KtAnalysisSession) +internal val KtType.typeForValueClass: Boolean + get() { + val symbol = expandedClassSymbol as? KtNamedClassOrObjectSymbol ?: return false + return symbol.isInline + } diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java index 67218108fb9..1284ff4745c 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java @@ -282,6 +282,12 @@ public class SymbolLightClassesByPsiForLibraryTestGenerated extends AbstractSymb runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/unresolvedWithAliasedImport.kt"); } + @Test + @TestMetadata("valueClassInSignature.kt") + public void testValueClassInSignature() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { @@ -369,6 +375,12 @@ public class SymbolLightClassesByPsiForLibraryTestGenerated extends AbstractSymb runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/throwsAnnotation.kt"); } + @Test + @TestMetadata("valueClassInSignature.kt") + public void testValueClassInSignature() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java index 1df9160625a..444c52d40bb 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java @@ -282,6 +282,12 @@ public class SymbolLightClassesByPsiForSourceTestGenerated extends AbstractSymbo runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/unresolvedWithAliasedImport.kt"); } + @Test + @TestMetadata("valueClassInSignature.kt") + public void testValueClassInSignature() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { @@ -369,6 +375,12 @@ public class SymbolLightClassesByPsiForSourceTestGenerated extends AbstractSymbo runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/throwsAnnotation.kt"); } + @Test + @TestMetadata("valueClassInSignature.kt") + public void testValueClassInSignature() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.fir.java new file mode 100644 index 00000000000..15a0b565a55 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.fir.java @@ -0,0 +1,32 @@ +@kotlin.jvm.JvmInline() +public final class Some /* Some*/ { + @org.jetbrains.annotations.NotNull() + private final java.lang.String value; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getValue();// getValue() + + public Some(@org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String) +} + +public final class SomeClass /* SomeClass*/ { + @org.jetbrains.annotations.NotNull() + private java.lang.String memberProp; + + public SomeClass();// .ctor() +} + +public abstract interface SomeInterface /* SomeInterface*/ { + class DefaultImpls ... +} + +public final class ValueClassInSignatureKt /* ValueClassInSignatureKt*/ { + @org.jetbrains.annotations.NotNull() + private static java.lang.String topLevelProp; + + @org.jetbrains.annotations.NotNull() + public static final java.lang.String getTopLevelProp();// getTopLevelProp() + + @org.jetbrains.annotations.NotNull() + public static final java.lang.String topLevelFunInReturn();// topLevelFunInReturn() +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.java new file mode 100644 index 00000000000..0427018b7e8 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.java @@ -0,0 +1,74 @@ +@kotlin.jvm.JvmInline() +public final class Some /* Some*/ { + @org.jetbrains.annotations.NotNull() + private final java.lang.String value; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getValue();// getValue() + + public Some(@org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String) +} + +public final class SomeClass /* SomeClass*/ { + @org.jetbrains.annotations.NotNull() + private java.lang.String memberProp; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getMemberProp();// getMemberProp() + + @org.jetbrains.annotations.NotNull() + public final java.lang.String memberFunInReturn();// memberFunInReturn() + + public SomeClass();// .ctor() + + public final int getMemberPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// getMemberPropInExtension(java.lang.String) + + public final void memberFunInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInExtension(java.lang.String) + + public final void memberFunInParameter(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInParameter(java.lang.String) + + public final void setMemberProp(@org.jetbrains.annotations.NotNull() java.lang.String);// setMemberProp(java.lang.String) + + public final void setMemberPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setMemberPropInExtension(java.lang.String, int) +} + +public abstract interface SomeInterface /* SomeInterface*/ { + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String getMemberProp();// getMemberProp() + + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String memberFunInReturn();// memberFunInReturn() + + public abstract int getMemberPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// getMemberPropInExtension(java.lang.String) + + public abstract void memberFunInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInExtension(java.lang.String) + + public abstract void memberFunInParameter(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInParameter(java.lang.String) + + public abstract void setMemberProp(@org.jetbrains.annotations.NotNull() java.lang.String);// setMemberProp(java.lang.String) + + public abstract void setMemberPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setMemberPropInExtension(java.lang.String, int) + + class DefaultImpls ... +} + +public final class ValueClassInSignatureKt /* ValueClassInSignatureKt*/ { + @org.jetbrains.annotations.NotNull() + private static java.lang.String topLevelProp; + + @org.jetbrains.annotations.NotNull() + public static final java.lang.String getTopLevelProp();// getTopLevelProp() + + @org.jetbrains.annotations.NotNull() + public static final java.lang.String topLevelFunInReturn();// topLevelFunInReturn() + + public static final int getTopLevelPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// getTopLevelPropInExtension(java.lang.String) + + public static final void setTopLevelProp(@org.jetbrains.annotations.NotNull() java.lang.String);// setTopLevelProp(java.lang.String) + + public static final void setTopLevelPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setTopLevelPropInExtension(java.lang.String, int) + + public static final void topLevelFunInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// topLevelFunInExtension(java.lang.String) + + public static final void topLevelFunInParameter(@org.jetbrains.annotations.NotNull() java.lang.String);// topLevelFunInParameter(java.lang.String) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt new file mode 100644 index 00000000000..f4e2c739cb1 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt @@ -0,0 +1,33 @@ +@JvmInline +value class Some(val value: String) + +var topLevelProp: Some = Some("1") +var Some.topLevelPropInExtension: Int + get() = 1 + set(value) {} + +fun topLevelFunInReturn(): Some = Some("1") +fun topLevelFunInParameter(s: Some) {} +fun Some.topLevelFunInExtension() {} + +class SomeClass { + var memberProp: Some = Some("1") + var Some.memberPropInExtension: Int + get() = 1 + set(value) {} + + fun memberFunInReturn(): Some = Some("1") + fun memberFunInParameter(s: Some) {} + fun Some.memberFunInExtension() {} +} + +interface SomeInterface { + var memberProp: Some + var Some.memberPropInExtension: Int + get() = 1 + set(value) {} + + fun memberFunInReturn(): Some + fun memberFunInParameter(s: Some) + fun Some.memberFunInExtension() +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.lib.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.lib.java new file mode 100644 index 00000000000..ce2d0aed573 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.lib.java @@ -0,0 +1,89 @@ +@kotlin.jvm.JvmInline() +public final class Some /* Some*/ { + @org.jetbrains.annotations.NotNull() + private final java.lang.String value; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getValue();// getValue() + + @org.jetbrains.annotations.NotNull() + public static java.lang.String constructor-impl(@org.jetbrains.annotations.NotNull() java.lang.String);// constructor-impl(java.lang.String) + + public boolean equals(java.lang.Object);// equals(java.lang.Object) + + public int hashCode();// hashCode() + + public java.lang.String toString();// toString() + + public static boolean equals-impl(java.lang.String, java.lang.Object);// equals-impl(java.lang.String, java.lang.Object) + + public static final boolean equals-impl0(java.lang.String, java.lang.String);// equals-impl0(java.lang.String, java.lang.String) + + public static int hashCode-impl(java.lang.String);// hashCode-impl(java.lang.String) + + public static java.lang.String toString-impl(java.lang.String);// toString-impl(java.lang.String) +} + +public final class SomeClass /* SomeClass*/ { + @org.jetbrains.annotations.NotNull() + private java.lang.String memberProp; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getMemberProp-YO-7n-0();// getMemberProp-YO-7n-0() + + @org.jetbrains.annotations.NotNull() + public final java.lang.String memberFunInReturn-YO-7n-0();// memberFunInReturn-YO-7n-0() + + public SomeClass();// .ctor() + + public final int getMemberPropInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// getMemberPropInExtension-5lyY9Q4(java.lang.String) + + public final void memberFunInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInExtension-5lyY9Q4(java.lang.String) + + public final void memberFunInParameter-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInParameter-5lyY9Q4(java.lang.String) + + public final void setMemberProp-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// setMemberProp-5lyY9Q4(java.lang.String) + + public final void setMemberPropInExtension-54afNMI(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setMemberPropInExtension-54afNMI(java.lang.String, int) +} + +public abstract interface SomeInterface /* SomeInterface*/ { + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String getMemberProp-YO-7n-0();// getMemberProp-YO-7n-0() + + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String memberFunInReturn-YO-7n-0();// memberFunInReturn-YO-7n-0() + + public abstract int getMemberPropInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// getMemberPropInExtension-5lyY9Q4(java.lang.String) + + public abstract void memberFunInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInExtension-5lyY9Q4(java.lang.String) + + public abstract void memberFunInParameter-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// memberFunInParameter-5lyY9Q4(java.lang.String) + + public abstract void setMemberProp-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// setMemberProp-5lyY9Q4(java.lang.String) + + public abstract void setMemberPropInExtension-54afNMI(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setMemberPropInExtension-54afNMI(java.lang.String, int) + + class DefaultImpls ... +} + +public final class ValueClassInSignatureKt /* ValueClassInSignatureKt*/ { + @org.jetbrains.annotations.NotNull() + private static java.lang.String topLevelProp; + + @org.jetbrains.annotations.NotNull() + public static final java.lang.String getTopLevelProp();// getTopLevelProp() + + @org.jetbrains.annotations.NotNull() + public static final java.lang.String topLevelFunInReturn();// topLevelFunInReturn() + + public static final int getTopLevelPropInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// getTopLevelPropInExtension-5lyY9Q4(java.lang.String) + + public static final void setTopLevelProp-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// setTopLevelProp-5lyY9Q4(java.lang.String) + + public static final void setTopLevelPropInExtension-54afNMI(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setTopLevelPropInExtension-54afNMI(java.lang.String, int) + + public static final void topLevelFunInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// topLevelFunInExtension-5lyY9Q4(java.lang.String) + + public static final void topLevelFunInParameter-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// topLevelFunInParameter-5lyY9Q4(java.lang.String) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.fir.java new file mode 100644 index 00000000000..a5c25cff899 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.fir.java @@ -0,0 +1,21 @@ +public final class RegularClass /* RegularClass*/ { + @org.jetbrains.annotations.NotNull() + private java.lang.String classProp; + + public RegularClass();// .ctor() +} + +public abstract interface RegularInterface /* RegularInterface*/ { + class DefaultImpls ... +} + +@kotlin.jvm.JvmInline() +public final class Some /* Some*/ { + @org.jetbrains.annotations.NotNull() + private final java.lang.String value; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getValue();// getValue() + + public Some(@org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.java new file mode 100644 index 00000000000..b800e8a24cc --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.java @@ -0,0 +1,53 @@ +public final class RegularClass /* RegularClass*/ { + @org.jetbrains.annotations.NotNull() + private java.lang.String classProp; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String classFunInReturn();// classFunInReturn() + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getClassProp();// getClassProp() + + public RegularClass();// .ctor() + + public final int getClassPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// getClassPropInExtension(java.lang.String) + + public final void classFunInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// classFunInExtension(java.lang.String) + + public final void classFunInParameter(@org.jetbrains.annotations.NotNull() java.lang.String);// classFunInParameter(java.lang.String) + + public final void setClassProp(@org.jetbrains.annotations.NotNull() java.lang.String);// setClassProp(java.lang.String) + + public final void setClassPropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setClassPropInExtension(java.lang.String, int) +} + +public abstract interface RegularInterface /* RegularInterface*/ { + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String getInterfaceProp();// getInterfaceProp() + + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String interfaceFunInReturn();// interfaceFunInReturn() + + public abstract int getInterfacePropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// getInterfacePropInExtension(java.lang.String) + + public abstract void interfaceFunInExtension(@org.jetbrains.annotations.NotNull() java.lang.String);// interfaceFunInExtension(java.lang.String) + + public abstract void interfaceFunInParameter(@org.jetbrains.annotations.NotNull() java.lang.String);// interfaceFunInParameter(java.lang.String) + + public abstract void setInterfaceProp(@org.jetbrains.annotations.NotNull() java.lang.String);// setInterfaceProp(java.lang.String) + + public abstract void setInterfacePropInExtension(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setInterfacePropInExtension(java.lang.String, int) + + class DefaultImpls ... +} + +@kotlin.jvm.JvmInline() +public final class Some /* Some*/ { + @org.jetbrains.annotations.NotNull() + private final java.lang.String value; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getValue();// getValue() + + public Some(@org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.kt b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.kt new file mode 100644 index 00000000000..bd3cc4a6d59 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.kt @@ -0,0 +1,24 @@ +// CHECK_BY_JAVA_FILE + +@JvmInline +value class Some(val value: String) + +class RegularClass { + var classProp: Some = Some("1") + var Some.classPropInExtension: Int + get() = 1 + set(value) {} + + fun classFunInReturn(): Some = Some("1") + fun classFunInParameter(s: Some) {} + fun Some.classFunInExtension() {} +} + +interface RegularInterface { + var interfaceProp: Some + var Some.interfacePropInExtension: Int + + fun interfaceFunInReturn(): Some = Some("1") + fun interfaceFunInParameter(s: Some) {} + fun Some.interfaceFunInExtension() {} +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.lib.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.lib.java new file mode 100644 index 00000000000..cdbff9c18d1 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/valueClassInSignature.lib.java @@ -0,0 +1,68 @@ +public final class RegularClass /* RegularClass*/ { + @org.jetbrains.annotations.NotNull() + private java.lang.String classProp; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String classFunInReturn-YO-7n-0();// classFunInReturn-YO-7n-0() + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getClassProp-YO-7n-0();// getClassProp-YO-7n-0() + + public RegularClass();// .ctor() + + public final int getClassPropInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// getClassPropInExtension-5lyY9Q4(java.lang.String) + + public final void classFunInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// classFunInExtension-5lyY9Q4(java.lang.String) + + public final void classFunInParameter-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// classFunInParameter-5lyY9Q4(java.lang.String) + + public final void setClassProp-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// setClassProp-5lyY9Q4(java.lang.String) + + public final void setClassPropInExtension-54afNMI(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setClassPropInExtension-54afNMI(java.lang.String, int) +} + +public abstract interface RegularInterface /* RegularInterface*/ { + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String getInterfaceProp-YO-7n-0();// getInterfaceProp-YO-7n-0() + + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String interfaceFunInReturn-YO-7n-0();// interfaceFunInReturn-YO-7n-0() + + public abstract int getInterfacePropInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// getInterfacePropInExtension-5lyY9Q4(java.lang.String) + + public abstract void interfaceFunInExtension-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// interfaceFunInExtension-5lyY9Q4(java.lang.String) + + public abstract void interfaceFunInParameter-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// interfaceFunInParameter-5lyY9Q4(java.lang.String) + + public abstract void setInterfaceProp-5lyY9Q4(@org.jetbrains.annotations.NotNull() java.lang.String);// setInterfaceProp-5lyY9Q4(java.lang.String) + + public abstract void setInterfacePropInExtension-54afNMI(@org.jetbrains.annotations.NotNull() java.lang.String, int);// setInterfacePropInExtension-54afNMI(java.lang.String, int) + + class DefaultImpls ... +} + +@kotlin.jvm.JvmInline() +public final class Some /* Some*/ { + @org.jetbrains.annotations.NotNull() + private final java.lang.String value; + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getValue();// getValue() + + @org.jetbrains.annotations.NotNull() + public static java.lang.String constructor-impl(@org.jetbrains.annotations.NotNull() java.lang.String);// constructor-impl(java.lang.String) + + public boolean equals(java.lang.Object);// equals(java.lang.Object) + + public int hashCode();// hashCode() + + public java.lang.String toString();// toString() + + public static boolean equals-impl(java.lang.String, java.lang.Object);// equals-impl(java.lang.String, java.lang.Object) + + public static final boolean equals-impl0(java.lang.String, java.lang.String);// equals-impl0(java.lang.String, java.lang.String) + + public static int hashCode-impl(java.lang.String);// hashCode-impl(java.lang.String) + + public static java.lang.String toString-impl(java.lang.String);// toString-impl(java.lang.String) +}