[JVM] Forbid non-JvmInline value classes again
This commit is contained in:
committed by
Space
parent
7595f798e1
commit
df1de3a7d3
+6
@@ -1285,6 +1285,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
token,
|
token,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
add(FirErrors.VALUE_CLASS_EMPTY_CONSTRUCTOR) { firDiagnostic ->
|
||||||
|
ValueClassEmptyConstructorImpl(
|
||||||
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
token,
|
||||||
|
)
|
||||||
|
}
|
||||||
add(FirErrors.VALUE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER) { firDiagnostic ->
|
add(FirErrors.VALUE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER) { firDiagnostic ->
|
||||||
ValueClassConstructorNotFinalReadOnlyParameterImpl(
|
ValueClassConstructorNotFinalReadOnlyParameterImpl(
|
||||||
firDiagnostic as KtPsiDiagnostic,
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
|||||||
+4
@@ -928,6 +928,10 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
|||||||
override val diagnosticClass get() = InlineClassConstructorWrongParametersSize::class
|
override val diagnosticClass get() = InlineClassConstructorWrongParametersSize::class
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract class ValueClassEmptyConstructor : KtFirDiagnostic<KtElement>() {
|
||||||
|
override val diagnosticClass get() = ValueClassEmptyConstructor::class
|
||||||
|
}
|
||||||
|
|
||||||
abstract class ValueClassConstructorNotFinalReadOnlyParameter : KtFirDiagnostic<KtParameter>() {
|
abstract class ValueClassConstructorNotFinalReadOnlyParameter : KtFirDiagnostic<KtParameter>() {
|
||||||
override val diagnosticClass get() = ValueClassConstructorNotFinalReadOnlyParameter::class
|
override val diagnosticClass get() = ValueClassConstructorNotFinalReadOnlyParameter::class
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -1110,6 +1110,11 @@ internal class InlineClassConstructorWrongParametersSizeImpl(
|
|||||||
override val token: ValidityToken,
|
override val token: ValidityToken,
|
||||||
) : KtFirDiagnostic.InlineClassConstructorWrongParametersSize(), KtAbstractFirDiagnostic<KtElement>
|
) : KtFirDiagnostic.InlineClassConstructorWrongParametersSize(), KtAbstractFirDiagnostic<KtElement>
|
||||||
|
|
||||||
|
internal class ValueClassEmptyConstructorImpl(
|
||||||
|
override val firDiagnostic: KtPsiDiagnostic,
|
||||||
|
override val token: ValidityToken,
|
||||||
|
) : KtFirDiagnostic.ValueClassEmptyConstructor(), KtAbstractFirDiagnostic<KtElement>
|
||||||
|
|
||||||
internal class ValueClassConstructorNotFinalReadOnlyParameterImpl(
|
internal class ValueClassConstructorNotFinalReadOnlyParameterImpl(
|
||||||
override val firDiagnostic: KtPsiDiagnostic,
|
override val firDiagnostic: KtPsiDiagnostic,
|
||||||
override val token: ValidityToken,
|
override val token: ValidityToken,
|
||||||
|
|||||||
+13
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.base
|
|||||||
|
|
||||||
import com.intellij.testFramework.TestDataPath;
|
import com.intellij.testFramework.TestDataPath;
|
||||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||||
|
import org.jetbrains.kotlin.test.utils.TransformersFunctions;
|
||||||
import org.jetbrains.kotlin.test.TestMetadata;
|
import org.jetbrains.kotlin.test.TestMetadata;
|
||||||
import org.junit.jupiter.api.Nested;
|
import org.junit.jupiter.api.Nested;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@@ -32113,6 +32114,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
|||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/propertiesWithBackingFieldsInsideValueClass.kt");
|
runTest("compiler/testData/diagnostics/tests/valueClasses/propertiesWithBackingFieldsInsideValueClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("recursiveMultiFieldValueClasses.kt")
|
||||||
|
public void testRecursiveMultiFieldValueClasses() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("recursiveValueClasses.kt")
|
@TestMetadata("recursiveValueClasses.kt")
|
||||||
public void testRecursiveValueClasses() throws Exception {
|
public void testRecursiveValueClasses() throws Exception {
|
||||||
@@ -32167,6 +32174,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
|||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingType.kt");
|
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingType.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
|
||||||
|
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("valueClassesInsideAnnotations.kt")
|
@TestMetadata("valueClassesInsideAnnotations.kt")
|
||||||
public void testValueClassesInsideAnnotations() throws Exception {
|
public void testValueClassesInsideAnnotations() throws Exception {
|
||||||
|
|||||||
+2
-2
@@ -32117,7 +32117,7 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
|||||||
@Test
|
@Test
|
||||||
@TestMetadata("recursiveMultiFieldValueClasses.kt")
|
@TestMetadata("recursiveMultiFieldValueClasses.kt")
|
||||||
public void testRecursiveMultiFieldValueClasses() throws Exception {
|
public void testRecursiveMultiFieldValueClasses() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation());
|
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -32177,7 +32177,7 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
|||||||
@Test
|
@Test
|
||||||
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
|
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
|
||||||
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
|
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation());
|
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
+2
-2
@@ -32117,7 +32117,7 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
|||||||
@Test
|
@Test
|
||||||
@TestMetadata("recursiveMultiFieldValueClasses.kt")
|
@TestMetadata("recursiveMultiFieldValueClasses.kt")
|
||||||
public void testRecursiveMultiFieldValueClasses() throws Exception {
|
public void testRecursiveMultiFieldValueClasses() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation());
|
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -32177,7 +32177,7 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
|||||||
@Test
|
@Test
|
||||||
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
|
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
|
||||||
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
|
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation());
|
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
+1
-4
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration
|
package org.jetbrains.kotlin.fir.analysis.jvm.checkers.declaration
|
||||||
|
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
@@ -24,9 +23,7 @@ object FirJvmInlineApplicabilityChecker : FirRegularClassChecker() {
|
|||||||
val annotation = declaration.getAnnotationByClassId(JVM_INLINE_ANNOTATION_CLASS_ID)
|
val annotation = declaration.getAnnotationByClassId(JVM_INLINE_ANNOTATION_CLASS_ID)
|
||||||
if (annotation != null && !declaration.isInline) {
|
if (annotation != null && !declaration.isInline) {
|
||||||
reporter.reportOn(annotation.source, FirJvmErrors.JVM_INLINE_WITHOUT_VALUE_CLASS, context)
|
reporter.reportOn(annotation.source, FirJvmErrors.JVM_INLINE_WITHOUT_VALUE_CLASS, context)
|
||||||
} else if (annotation == null && declaration.isInline && !declaration.isExpect &&
|
} else if (annotation == null && declaration.isInline && !declaration.isExpect) {
|
||||||
!context.languageVersionSettings.supportsFeature(LanguageFeature.ValueClasses)
|
|
||||||
) {
|
|
||||||
reporter.reportOn(
|
reporter.reportOn(
|
||||||
declaration.getModifier(KtTokens.VALUE_KEYWORD)?.source,
|
declaration.getModifier(KtTokens.VALUE_KEYWORD)?.source,
|
||||||
FirJvmErrors.VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION,
|
FirJvmErrors.VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION,
|
||||||
|
|||||||
-2346
File diff suppressed because it is too large
Load Diff
+1
-4
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.resolve.jvm.checkers
|
package org.jetbrains.kotlin.resolve.jvm.checkers
|
||||||
|
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
@@ -36,9 +35,7 @@ class JvmInlineApplicabilityChecker : DeclarationChecker {
|
|||||||
context.trace.report(ErrorsJvm.JVM_INLINE_WITHOUT_VALUE_CLASS.on(annotationEntry))
|
context.trace.report(ErrorsJvm.JVM_INLINE_WITHOUT_VALUE_CLASS.on(annotationEntry))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (descriptor.isValue && annotation == null && !descriptor.isExpect &&
|
if (descriptor.isValue && annotation == null && !descriptor.isExpect) {
|
||||||
!context.languageVersionSettings.supportsFeature(LanguageFeature.ValueClasses)
|
|
||||||
) {
|
|
||||||
val valueKeyword = declaration.modifierList?.getModifier(KtTokens.VALUE_KEYWORD) ?: return
|
val valueKeyword = declaration.modifierList?.getModifier(KtTokens.VALUE_KEYWORD) ?: return
|
||||||
context.trace.report(ErrorsJvm.VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION.on(valueKeyword))
|
context.trace.report(ErrorsJvm.VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION.on(valueKeyword))
|
||||||
}
|
}
|
||||||
|
|||||||
+30
-24
@@ -3,11 +3,14 @@
|
|||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses
|
// LANGUAGE: +ValueClasses
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class F1(val x: Int)
|
value class F1(val x: Int)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class F2(val x: UInt)
|
value class F2(val x: UInt)
|
||||||
|
|
||||||
value class F3(val x: String)
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
|
value class F3(val x: F1, val y: F2)
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class F4(val x: Int)
|
value class F4(val x: Int)
|
||||||
@@ -18,9 +21,8 @@ value class F5(val x: UInt)
|
|||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class F6(val x: String)
|
value class F6(val x: String)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class A(
|
value class A(
|
||||||
val f1: F1,
|
|
||||||
val f2: F2,
|
|
||||||
val f3: F3,
|
val f3: F3,
|
||||||
val f4: F4,
|
val f4: F4,
|
||||||
val f5: F5,
|
val f5: F5,
|
||||||
@@ -30,6 +32,7 @@ value class A(
|
|||||||
val f9: String,
|
val f9: String,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class B(val a1: A, val a2: A) {
|
value class B(val a1: A, val a2: A) {
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "OverridenBToString(a1 = $a1, a2 = $a2)"
|
return "OverridenBToString(a1 = $a1, a2 = $a2)"
|
||||||
@@ -39,40 +42,43 @@ value class B(val a1: A, val a2: A) {
|
|||||||
fun box(): String {
|
fun box(): String {
|
||||||
val f1 = F1(1)
|
val f1 = F1(1)
|
||||||
val f2 = F2(UInt.MAX_VALUE)
|
val f2 = F2(UInt.MAX_VALUE)
|
||||||
val f3 = F3("234")
|
val f3 = F3(f1, f2)
|
||||||
val f4 = F4(5)
|
val f4 = F4(5)
|
||||||
val f5 = F5(UInt.MAX_VALUE.dec())
|
val f5 = F5(UInt.MAX_VALUE.dec())
|
||||||
val f6 = F6("678")
|
val f6 = F6("678")
|
||||||
val a1 = A(f1, f2, f3, f4, f5, f6, 9, UInt.MAX_VALUE - 2U, "0")
|
val a1 = A(f3, f4, f5, f6, 9, UInt.MAX_VALUE - 2U, "0")
|
||||||
val a2 = a1
|
val a2 = a1
|
||||||
val b = B(a1, a2)
|
val b = B(a1, a2)
|
||||||
|
|
||||||
assert(f1.x == 1)
|
assert(f1.x == 1)
|
||||||
assert(f2.x == UInt.MAX_VALUE)
|
assert(f2.x == UInt.MAX_VALUE)
|
||||||
assert(f3.x == "234")
|
assert(f3.x == f1)
|
||||||
|
assert(f3.x.x == 1)
|
||||||
|
assert(f3.y == f2)
|
||||||
|
assert(f3.y.x == UInt.MAX_VALUE)
|
||||||
assert(f4.x == 5)
|
assert(f4.x == 5)
|
||||||
assert(f5.x == UInt.MAX_VALUE - 1U)
|
assert(f5.x == UInt.MAX_VALUE - 1U)
|
||||||
assert(f6.x == "678")
|
assert(f6.x == "678")
|
||||||
|
|
||||||
assert(f1 == a1.f1)
|
assert(f1 == a1.f3.x)
|
||||||
assert(f1.hashCode() == a1.f1.hashCode())
|
assert(f1.hashCode() == a1.f3.x.hashCode())
|
||||||
assert(f1.toString() == a1.f1.toString())
|
assert(f1.toString() == a1.f3.x.toString())
|
||||||
assert(f1 == a2.f1)
|
assert(f1 == a2.f3.x)
|
||||||
assert(f1.hashCode() == a2.f1.hashCode())
|
assert(f1.hashCode() == a2.f3.x.hashCode())
|
||||||
assert(f1.toString() == a2.f1.toString())
|
assert(f1.toString() == a2.f3.x.toString())
|
||||||
assert(a1.f1 == a2.f1)
|
assert(a1.f3.x == a2.f3.x)
|
||||||
assert(a1.f1.hashCode() == a2.f1.hashCode())
|
assert(a1.f3.x.hashCode() == a2.f3.x.hashCode())
|
||||||
assert(a1.f1.toString() == a2.f1.toString())
|
assert(a1.f3.x.toString() == a2.f3.x.toString())
|
||||||
|
|
||||||
assert(f2 == a1.f2)
|
assert(f2 == a1.f3.y)
|
||||||
assert(f2.hashCode() == a1.f2.hashCode())
|
assert(f2.hashCode() == a1.f3.y.hashCode())
|
||||||
assert(f2.toString() == a1.f2.toString())
|
assert(f2.toString() == a1.f3.y.toString())
|
||||||
assert(f2 == a2.f2)
|
assert(f2 == a2.f3.y)
|
||||||
assert(f2.hashCode() == a2.f2.hashCode())
|
assert(f2.hashCode() == a2.f3.y.hashCode())
|
||||||
assert(f2.toString() == a2.f2.toString())
|
assert(f2.toString() == a2.f3.y.toString())
|
||||||
assert(a1.f2 == a2.f2)
|
assert(a1.f3.y == a2.f3.y)
|
||||||
assert(a1.f2.hashCode() == a2.f2.hashCode())
|
assert(a1.f3.y.hashCode() == a2.f3.y.hashCode())
|
||||||
assert(a1.f2.toString() == a2.f2.toString())
|
assert(a1.f3.y.toString() == a2.f3.y.toString())
|
||||||
|
|
||||||
assert(f3 == a1.f3)
|
assert(f3 == a1.f3)
|
||||||
assert(f3.hashCode() == a1.f3.hashCode())
|
assert(f3.hashCode() == a1.f3.hashCode())
|
||||||
|
|||||||
+14
-9
@@ -8,12 +8,14 @@
|
|||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class A1(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A1<!>)
|
value class A1(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A1<!>)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class B1(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B1<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B1<!>)
|
value class B1(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B1<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B1<!>)
|
||||||
|
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class A2(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B2<!>)
|
value class A2(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B2<!>)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class B2(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A2<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A2<!>)
|
value class B2(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A2<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A2<!>)
|
||||||
|
|
||||||
|
|
||||||
@@ -24,26 +26,32 @@ OPTIONAL_JVM_INLINE_ANNOTATION
|
|||||||
value class B3(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A3<!>)
|
value class B3(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A3<!>)
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class A4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B4<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B4<!>)
|
value class A4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B4<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>B4<!>)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class B4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A4<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A4<!>)
|
value class B4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A4<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>A4<!>)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class C4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>D4?<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>D4?<!>)
|
value class C4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>D4?<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>D4?<!>)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class D4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>D4?<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>C4?<!>)
|
value class D4(val x: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>D4?<!>, val y: <!VALUE_CLASS_CANNOT_BE_RECURSIVE!>C4?<!>)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class A5<T : A5<T>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
value class A5<T : A5<T>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class B5<T : B5<T>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
value class B5<T : B5<T>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
||||||
|
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class A6<T : B6<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
value class A6<T : B6<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
||||||
|
|
||||||
value class B6<T : A6<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
|
value class B6<T : A6<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
||||||
|
|
||||||
|
|
||||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
@@ -53,11 +61,8 @@ OPTIONAL_JVM_INLINE_ANNOTATION
|
|||||||
value class B7<T : A7<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
value class B7<T : A7<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
||||||
|
|
||||||
|
|
||||||
value class A8<T : B8<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
|
value class A8<T : B8<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>)
|
||||||
|
|
||||||
value class B8<T : A8<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
|
value class B8<T : A8<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>)
|
||||||
|
|
||||||
value class A9<T : B9<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>)
|
|
||||||
|
|
||||||
value class B9<T : A9<<!UPPER_BOUND_VIOLATED!>T<!>>>(val x: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>, val y: <!VALUE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>)
|
|
||||||
|
|||||||
+22
-43
@@ -1,6 +1,6 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
public final value class A1 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A1 {
|
||||||
public constructor A1(/*0*/ x: A1)
|
public constructor A1(/*0*/ x: A1)
|
||||||
public final val x: A1
|
public final val x: A1
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
@@ -8,7 +8,7 @@ public final value class A1 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class A2 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A2 {
|
||||||
public constructor A2(/*0*/ x: B2)
|
public constructor A2(/*0*/ x: B2)
|
||||||
public final val x: B2
|
public final val x: B2
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
@@ -16,7 +16,7 @@ public final value class A2 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class A3 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A3 {
|
||||||
public constructor A3(/*0*/ x: B3)
|
public constructor A3(/*0*/ x: B3)
|
||||||
public final val x: B3
|
public final val x: B3
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
@@ -24,7 +24,7 @@ public final value class A3 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class A4 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A4 {
|
||||||
public constructor A4(/*0*/ x: B4, /*1*/ y: B4)
|
public constructor A4(/*0*/ x: B4, /*1*/ y: B4)
|
||||||
public final val x: B4
|
public final val x: B4
|
||||||
public final val y: B4
|
public final val y: B4
|
||||||
@@ -33,16 +33,15 @@ public final value class A4 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class A5</*0*/ T : A5<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A5</*0*/ T : A5<T>> {
|
||||||
public constructor A5</*0*/ T : A5<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor A5</*0*/ T : A5<T>>(/*0*/ x: T)
|
||||||
public final val x: T
|
public final val x: T
|
||||||
public final val y: T
|
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class A6</*0*/ T : B6<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A6</*0*/ T : B6<T>> {
|
||||||
public constructor A6</*0*/ T : B6<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor A6</*0*/ T : B6<T>>(/*0*/ x: T, /*1*/ y: T)
|
||||||
public final val x: T
|
public final val x: T
|
||||||
public final val y: T
|
public final val y: T
|
||||||
@@ -51,7 +50,7 @@ public final value class A6</*0*/ T : B6<T>> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class A7</*0*/ T : B7<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A7</*0*/ T : B7<T>> {
|
||||||
public constructor A7</*0*/ T : B7<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor A7</*0*/ T : B7<T>>(/*0*/ x: T, /*1*/ y: T)
|
||||||
public final val x: T
|
public final val x: T
|
||||||
public final val y: T
|
public final val y: T
|
||||||
@@ -60,17 +59,8 @@ public final value class A7</*0*/ T : B7<T>> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class A8</*0*/ T : B8<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class A8</*0*/ T : B8<T>> {
|
||||||
public constructor A8</*0*/ T : B8<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor A8</*0*/ T : B8<T>>(/*0*/ x: T?, /*1*/ y: T?)
|
||||||
public final val x: T
|
|
||||||
public final val y: T
|
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
|
||||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
|
||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
|
||||||
}
|
|
||||||
|
|
||||||
public final value class A9</*0*/ T : B9<T>> {
|
|
||||||
public constructor A9</*0*/ T : B9<T>>(/*0*/ x: T?, /*1*/ y: T?)
|
|
||||||
public final val x: T?
|
public final val x: T?
|
||||||
public final val y: T?
|
public final val y: T?
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
@@ -78,7 +68,7 @@ public final value class A9</*0*/ T : B9<T>> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B1 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B1 {
|
||||||
public constructor B1(/*0*/ x: B1, /*1*/ y: B1)
|
public constructor B1(/*0*/ x: B1, /*1*/ y: B1)
|
||||||
public final val x: B1
|
public final val x: B1
|
||||||
public final val y: B1
|
public final val y: B1
|
||||||
@@ -87,7 +77,7 @@ public final value class B1 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B2 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B2 {
|
||||||
public constructor B2(/*0*/ x: A2, /*1*/ y: A2)
|
public constructor B2(/*0*/ x: A2, /*1*/ y: A2)
|
||||||
public final val x: A2
|
public final val x: A2
|
||||||
public final val y: A2
|
public final val y: A2
|
||||||
@@ -96,7 +86,7 @@ public final value class B2 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B3 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B3 {
|
||||||
public constructor B3(/*0*/ x: A3)
|
public constructor B3(/*0*/ x: A3)
|
||||||
public final val x: A3
|
public final val x: A3
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
@@ -104,7 +94,7 @@ public final value class B3 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B4 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B4 {
|
||||||
public constructor B4(/*0*/ x: A4, /*1*/ y: A4)
|
public constructor B4(/*0*/ x: A4, /*1*/ y: A4)
|
||||||
public final val x: A4
|
public final val x: A4
|
||||||
public final val y: A4
|
public final val y: A4
|
||||||
@@ -113,7 +103,7 @@ public final value class B4 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B5</*0*/ T : B5<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B5</*0*/ T : B5<T>> {
|
||||||
public constructor B5</*0*/ T : B5<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor B5</*0*/ T : B5<T>>(/*0*/ x: T, /*1*/ y: T)
|
||||||
public final val x: T
|
public final val x: T
|
||||||
public final val y: T
|
public final val y: T
|
||||||
@@ -122,16 +112,15 @@ public final value class B5</*0*/ T : B5<T>> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B6</*0*/ T : A6<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B6</*0*/ T : A6<T>> {
|
||||||
public constructor B6</*0*/ T : A6<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor B6</*0*/ T : A6<T>>(/*0*/ x: T)
|
||||||
public final val x: T
|
public final val x: T
|
||||||
public final val y: T
|
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B7</*0*/ T : A7<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B7</*0*/ T : A7<T>> {
|
||||||
public constructor B7</*0*/ T : A7<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor B7</*0*/ T : A7<T>>(/*0*/ x: T, /*1*/ y: T)
|
||||||
public final val x: T
|
public final val x: T
|
||||||
public final val y: T
|
public final val y: T
|
||||||
@@ -140,17 +129,8 @@ public final value class B7</*0*/ T : A7<T>> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class B8</*0*/ T : A8<T>> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class B8</*0*/ T : A8<T>> {
|
||||||
public constructor B8</*0*/ T : A8<T>>(/*0*/ x: T, /*1*/ y: T)
|
public constructor B8</*0*/ T : A8<T>>(/*0*/ x: T?, /*1*/ y: T?)
|
||||||
public final val x: T
|
|
||||||
public final val y: T
|
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
|
||||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
|
||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
|
||||||
}
|
|
||||||
|
|
||||||
public final value class B9</*0*/ T : A9<T>> {
|
|
||||||
public constructor B9</*0*/ T : A9<T>>(/*0*/ x: T?, /*1*/ y: T?)
|
|
||||||
public final val x: T?
|
public final val x: T?
|
||||||
public final val y: T?
|
public final val y: T?
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
@@ -158,7 +138,7 @@ public final value class B9</*0*/ T : A9<T>> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class C4 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class C4 {
|
||||||
public constructor C4(/*0*/ x: D4?, /*1*/ y: D4?)
|
public constructor C4(/*0*/ x: D4?, /*1*/ y: D4?)
|
||||||
public final val x: D4?
|
public final val x: D4?
|
||||||
public final val y: D4?
|
public final val y: D4?
|
||||||
@@ -167,7 +147,7 @@ public final value class C4 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class D4 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class D4 {
|
||||||
public constructor D4(/*0*/ x: D4?, /*1*/ y: C4?)
|
public constructor D4(/*0*/ x: D4?, /*1*/ y: C4?)
|
||||||
public final val x: D4?
|
public final val x: D4?
|
||||||
public final val y: C4?
|
public final val y: C4?
|
||||||
@@ -175,4 +155,3 @@ public final value class D4 {
|
|||||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -4,6 +4,7 @@
|
|||||||
// WORKS_WHEN_VALUE_CLASS
|
// WORKS_WHEN_VALUE_CLASS
|
||||||
// LANGUAGE: +ValueClasses
|
// LANGUAGE: +ValueClasses
|
||||||
|
|
||||||
|
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||||
value class Empty<T><!VALUE_CLASS_EMPTY_CONSTRUCTOR!>()<!>
|
value class Empty<T><!VALUE_CLASS_EMPTY_CONSTRUCTOR!>()<!>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.txt
Vendored
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
public final value class Bar {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class Bar {
|
||||||
public constructor Bar(/*0*/ u: kotlin.Unit, /*1*/ y: kotlin.Unit)
|
public constructor Bar(/*0*/ u: kotlin.Unit, /*1*/ y: kotlin.Unit)
|
||||||
public final val u: kotlin.Unit
|
public final val u: kotlin.Unit
|
||||||
public final val y: kotlin.Unit
|
public final val y: kotlin.Unit
|
||||||
@@ -9,7 +9,7 @@ public final value class Bar {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class BarNullable {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class BarNullable {
|
||||||
public constructor BarNullable(/*0*/ u: kotlin.Unit?, /*1*/ y: kotlin.Unit?)
|
public constructor BarNullable(/*0*/ u: kotlin.Unit?, /*1*/ y: kotlin.Unit?)
|
||||||
public final val u: kotlin.Unit?
|
public final val u: kotlin.Unit?
|
||||||
public final val y: kotlin.Unit?
|
public final val y: kotlin.Unit?
|
||||||
@@ -18,7 +18,7 @@ public final value class BarNullable {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class Baz {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class Baz {
|
||||||
public constructor Baz(/*0*/ u: kotlin.Nothing, /*1*/ y: kotlin.Nothing)
|
public constructor Baz(/*0*/ u: kotlin.Nothing, /*1*/ y: kotlin.Nothing)
|
||||||
public final val u: kotlin.Nothing
|
public final val u: kotlin.Nothing
|
||||||
public final val y: kotlin.Nothing
|
public final val y: kotlin.Nothing
|
||||||
@@ -27,7 +27,7 @@ public final value class Baz {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class BazNullable {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class BazNullable {
|
||||||
public constructor BazNullable(/*0*/ u: kotlin.Nothing?, /*1*/ y: kotlin.Nothing?)
|
public constructor BazNullable(/*0*/ u: kotlin.Nothing?, /*1*/ y: kotlin.Nothing?)
|
||||||
public final val u: kotlin.Nothing?
|
public final val u: kotlin.Nothing?
|
||||||
public final val y: kotlin.Nothing?
|
public final val y: kotlin.Nothing?
|
||||||
@@ -36,14 +36,14 @@ public final value class BazNullable {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class Empty</*0*/ T> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class Empty</*0*/ T> {
|
||||||
public constructor Empty</*0*/ T>()
|
public constructor Empty</*0*/ T>()
|
||||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class Foo</*0*/ T> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class Foo</*0*/ T> {
|
||||||
public constructor Foo</*0*/ T>(/*0*/ x: T, /*1*/ y: T)
|
public constructor Foo</*0*/ T>(/*0*/ x: T, /*1*/ y: T)
|
||||||
public final val x: T
|
public final val x: T
|
||||||
public final val y: T
|
public final val y: T
|
||||||
@@ -52,7 +52,7 @@ public final value class Foo</*0*/ T> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class FooGenericArray</*0*/ T> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class FooGenericArray</*0*/ T> {
|
||||||
public constructor FooGenericArray</*0*/ T>(/*0*/ x: kotlin.Array<T>, /*1*/ y: kotlin.Array<T>)
|
public constructor FooGenericArray</*0*/ T>(/*0*/ x: kotlin.Array<T>, /*1*/ y: kotlin.Array<T>)
|
||||||
public final val x: kotlin.Array<T>
|
public final val x: kotlin.Array<T>
|
||||||
public final val y: kotlin.Array<T>
|
public final val y: kotlin.Array<T>
|
||||||
@@ -61,7 +61,7 @@ public final value class FooGenericArray</*0*/ T> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class FooGenericArray2</*0*/ T> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class FooGenericArray2</*0*/ T> {
|
||||||
public constructor FooGenericArray2</*0*/ T>(/*0*/ x: kotlin.Array<kotlin.Array<T>>, /*1*/ y: kotlin.Array<kotlin.Array<T>>)
|
public constructor FooGenericArray2</*0*/ T>(/*0*/ x: kotlin.Array<kotlin.Array<T>>, /*1*/ y: kotlin.Array<kotlin.Array<T>>)
|
||||||
public final val x: kotlin.Array<kotlin.Array<T>>
|
public final val x: kotlin.Array<kotlin.Array<T>>
|
||||||
public final val y: kotlin.Array<kotlin.Array<T>>
|
public final val y: kotlin.Array<kotlin.Array<T>>
|
||||||
@@ -70,7 +70,7 @@ public final value class FooGenericArray2</*0*/ T> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class FooNullable</*0*/ T> {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class FooNullable</*0*/ T> {
|
||||||
public constructor FooNullable</*0*/ T>(/*0*/ x: T?, /*1*/ y: T?)
|
public constructor FooNullable</*0*/ T>(/*0*/ x: T?, /*1*/ y: T?)
|
||||||
public final val x: T?
|
public final val x: T?
|
||||||
public final val y: T?
|
public final val y: T?
|
||||||
@@ -79,7 +79,7 @@ public final value class FooNullable</*0*/ T> {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class FooStarProjectedArray {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class FooStarProjectedArray {
|
||||||
public constructor FooStarProjectedArray(/*0*/ x: kotlin.Array<*>, /*1*/ y: kotlin.Array<*>)
|
public constructor FooStarProjectedArray(/*0*/ x: kotlin.Array<*>, /*1*/ y: kotlin.Array<*>)
|
||||||
public final val x: kotlin.Array<*>
|
public final val x: kotlin.Array<*>
|
||||||
public final val y: kotlin.Array<*>
|
public final val y: kotlin.Array<*>
|
||||||
@@ -88,7 +88,7 @@ public final value class FooStarProjectedArray {
|
|||||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
public final value class FooStarProjectedArray2 {
|
@kotlin.Suppress(names = {"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"}) @kotlin.jvm.JvmInline public final value class FooStarProjectedArray2 {
|
||||||
public constructor FooStarProjectedArray2(/*0*/ x: kotlin.Array<kotlin.Array<*>>, /*1*/ y: kotlin.Array<kotlin.Array<*>>)
|
public constructor FooStarProjectedArray2(/*0*/ x: kotlin.Array<kotlin.Array<*>>, /*1*/ y: kotlin.Array<kotlin.Array<*>>)
|
||||||
public final val x: kotlin.Array<kotlin.Array<*>>
|
public final val x: kotlin.Array<kotlin.Array<*>>
|
||||||
public final val y: kotlin.Array<kotlin.Array<*>>
|
public final val y: kotlin.Array<kotlin.Array<*>>
|
||||||
|
|||||||
Generated
+2
-2
@@ -32207,7 +32207,7 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
@Test
|
@Test
|
||||||
@TestMetadata("recursiveMultiFieldValueClasses.kt")
|
@TestMetadata("recursiveMultiFieldValueClasses.kt")
|
||||||
public void testRecursiveMultiFieldValueClasses() throws Exception {
|
public void testRecursiveMultiFieldValueClasses() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation());
|
runTest("compiler/testData/diagnostics/tests/valueClasses/recursiveMultiFieldValueClasses.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -32267,7 +32267,7 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
@Test
|
@Test
|
||||||
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
|
@TestMetadata("valueClassWithForbiddenUnderlyingTypeMultiField.kt")
|
||||||
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
|
public void testValueClassWithForbiddenUnderlyingTypeMultiField() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation());
|
runTest("compiler/testData/diagnostics/tests/valueClasses/valueClassWithForbiddenUnderlyingTypeMultiField.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithUniversal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
-2346
File diff suppressed because it is too large
Load Diff
+3
@@ -11,6 +11,9 @@ object TransformersFunctions {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
val replaceOptionalJvmInlineAnnotationWithReal = ReplacingSourceTransformer("OPTIONAL_JVM_INLINE_ANNOTATION", "@JvmInline")
|
val replaceOptionalJvmInlineAnnotationWithReal = ReplacingSourceTransformer("OPTIONAL_JVM_INLINE_ANNOTATION", "@JvmInline")
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
val replaceOptionalJvmInlineAnnotationWithUniversal = ReplacingSourceTransformer("OPTIONAL_JVM_INLINE_ANNOTATION", "@Suppress(\"OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE\") @kotlin.jvm.JvmInline")
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val removeOptionalJvmInlineAnnotation = ReplacingSourceTransformer("OPTIONAL_JVM_INLINE_ANNOTATION", "")
|
val removeOptionalJvmInlineAnnotation = ReplacingSourceTransformer("OPTIONAL_JVM_INLINE_ANNOTATION", "")
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -7,12 +7,16 @@ package org.jetbrains.kotlin.generators.model
|
|||||||
|
|
||||||
class WithoutJvmInlineTestMethodModel(
|
class WithoutJvmInlineTestMethodModel(
|
||||||
source: SimpleTestMethodModel,
|
source: SimpleTestMethodModel,
|
||||||
withAnnotation: Boolean,
|
withAnnotation: Boolean?,
|
||||||
withPostfix: Boolean,
|
withPostfix: Boolean,
|
||||||
) : TransformingTestMethodModel(
|
) : TransformingTestMethodModel(
|
||||||
source,
|
source,
|
||||||
transformer = "TransformersFunctions.get" +
|
transformer = "TransformersFunctions.get" +
|
||||||
if (withAnnotation) "ReplaceOptionalJvmInlineAnnotationWithReal()" else "RemoveOptionalJvmInlineAnnotation()"
|
when (withAnnotation) {
|
||||||
|
true -> "ReplaceOptionalJvmInlineAnnotationWithReal()"
|
||||||
|
false -> "RemoveOptionalJvmInlineAnnotation()"
|
||||||
|
null -> "ReplaceOptionalJvmInlineAnnotationWithUniversal()"
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
override val name: String = source.name + if (withPostfix) "_valueClasses" else ""
|
override val name: String = source.name + if (withPostfix) "_valueClasses" else ""
|
||||||
}
|
}
|
||||||
+3
-3
@@ -42,9 +42,9 @@ fun methodModelLocator(
|
|||||||
).let { methodModel ->
|
).let { methodModel ->
|
||||||
if (methodModel.containsWithoutJvmInline()) {
|
if (methodModel.containsWithoutJvmInline()) {
|
||||||
val isWithAnnotationAndIsWithPostfix = when {
|
val isWithAnnotationAndIsWithPostfix = when {
|
||||||
!targetBackend.isRecursivelyCompatibleWith(TargetBackend.JVM) -> listOf(false to false)
|
targetBackend.isRecursivelyCompatibleWith(TargetBackend.JVM) -> listOf(true to false)
|
||||||
targetBackend.isIR -> listOf(true to false, false to true)
|
targetBackend == TargetBackend.ANY -> listOf(null to false)
|
||||||
else -> listOf(true to false)
|
else -> listOf(false to false)
|
||||||
}
|
}
|
||||||
isWithAnnotationAndIsWithPostfix.map { (ann, post) -> WithoutJvmInlineTestMethodModel(methodModel, ann, post) }
|
isWithAnnotationAndIsWithPostfix.map { (ann, post) -> WithoutJvmInlineTestMethodModel(methodModel, ann, post) }
|
||||||
} else listOf(methodModel)
|
} else listOf(methodModel)
|
||||||
|
|||||||
Reference in New Issue
Block a user