提交 62123d72 编写于 作者: I Ilmir Usmanov

IC: Add inline class -> @JvmInline value class warning

上级 b417786f
...@@ -15005,6 +15005,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti ...@@ -15005,6 +15005,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
runTest("compiler/testData/diagnostics/tests/inlineClasses/inlineClassDeclarationCheck.kt"); runTest("compiler/testData/diagnostics/tests/inlineClasses/inlineClassDeclarationCheck.kt");
} }
@Test
@TestMetadata("inlineClassDeprecated.kt")
public void testInlineClassDeprecated() throws Exception {
runTest("compiler/testData/diagnostics/tests/inlineClasses/inlineClassDeprecated.kt");
}
@Test @Test
@TestMetadata("inlineClassImplementsCollection.kt") @TestMetadata("inlineClassImplementsCollection.kt")
public void testInlineClassImplementsCollection() throws Exception { public void testInlineClassImplementsCollection() throws Exception {
...@@ -365,6 +365,7 @@ public interface Errors { ...@@ -365,6 +365,7 @@ public interface Errors {
DiagnosticFactory0<PsiElement> SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<PsiElement> SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<PsiElement> INNER_CLASS_INSIDE_INLINE_CLASS = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<PsiElement> INNER_CLASS_INSIDE_INLINE_CLASS = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<PsiElement> VALUE_CLASS_CANNOT_BE_CLONEABLE = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<PsiElement> VALUE_CLASS_CANNOT_BE_CLONEABLE = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<PsiElement> INLINE_CLASS_DEPRECATED = DiagnosticFactory0.create(WARNING);
// Result class // Result class
......
...@@ -724,6 +724,7 @@ public class DefaultErrorMessages { ...@@ -724,6 +724,7 @@ public class DefaultErrorMessages {
MAP.put(SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS, "Secondary constructors with bodies are reserved for for future releases"); MAP.put(SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS, "Secondary constructors with bodies are reserved for for future releases");
MAP.put(INNER_CLASS_INSIDE_INLINE_CLASS, "Inline class cannot have inner classes"); MAP.put(INNER_CLASS_INSIDE_INLINE_CLASS, "Inline class cannot have inner classes");
MAP.put(VALUE_CLASS_CANNOT_BE_CLONEABLE, "Value class cannot be Cloneable"); MAP.put(VALUE_CLASS_CANNOT_BE_CLONEABLE, "Value class cannot be Cloneable");
MAP.put(INLINE_CLASS_DEPRECATED, "Inline classes are deprecated in favor of value classes");
MAP.put(RESULT_CLASS_IN_RETURN_TYPE, "'kotlin.Result' cannot be used as a return type"); MAP.put(RESULT_CLASS_IN_RETURN_TYPE, "'kotlin.Result' cannot be used as a return type");
MAP.put(RESULT_CLASS_WITH_NULLABLE_OPERATOR, "Expression of type 'kotlin.Result' cannot be used as a left operand of ''{0}''", STRING); MAP.put(RESULT_CLASS_WITH_NULLABLE_OPERATOR, "Expression of type 'kotlin.Result' cannot be used as a left operand of ''{0}''", STRING);
......
...@@ -357,6 +357,13 @@ object ModifierCheckerCore { ...@@ -357,6 +357,13 @@ object ModifierCheckerCore {
continue continue
} }
if (dependency == LanguageFeature.InlineClasses) {
if (languageVersionSettings.supportsFeature(LanguageFeature.JvmInlineValueClasses)) {
trace.report(Errors.INLINE_CLASS_DEPRECATED.on(node.psi))
continue
}
}
val diagnosticData = dependency to languageVersionSettings val diagnosticData = dependency to languageVersionSettings
when (featureSupport) { when (featureSupport) {
LanguageFeature.State.ENABLED_WITH_WARNING -> { LanguageFeature.State.ENABLED_WITH_WARNING -> {
......
...@@ -15,10 +15,8 @@ import org.jetbrains.kotlin.name.FqNameUnsafe ...@@ -15,10 +15,8 @@ import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.modalityModifier import org.jetbrains.kotlin.psi.psiUtil.modalityModifier
import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperClassifiers import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperClassifiers
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces
import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.typeUtil.isNothing import org.jetbrains.kotlin.types.typeUtil.isNothing
import org.jetbrains.kotlin.types.typeUtil.isTypeParameter import org.jetbrains.kotlin.types.typeUtil.isTypeParameter
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// SKIP_JAVAC // SKIP_JAVAC
// FILE: uint.kt // FILE: uint.kt
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// SKIP_JAVAC // SKIP_JAVAC
// FILE: uint.kt // FILE: uint.kt
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// !LANGUAGE: -InlineClasses // !LANGUAGE: -InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// !LANGUAGE: -InlineClasses // !LANGUAGE: -InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
<!UNSUPPORTED_FEATURE!>inline<!> class Foo(val x: Int) <!UNSUPPORTED_FEATURE!>inline<!> class Foo(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class IC(val i: Int) inline class IC(val i: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class IC(val i: Int) inline class IC(val i: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class X(val x: Int) inline class X(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class X(val x: Int) inline class X(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
class Val { class Val {
operator fun getValue(thisRef: Any?, kProp: Any?) = 1 operator fun getValue(thisRef: Any?, kProp: Any?) = 1
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
class Val { class Val {
operator fun getValue(thisRef: Any?, kProp: Any?) = 1 operator fun getValue(thisRef: Any?, kProp: Any?) = 1
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class X(val x: Int) inline class X(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class X(val x: Int) inline class X(val x: Int)
......
// FIR_IDENTICAL // FIR_IDENTICAL
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Name(val name: String) inline class Name(val name: String)
inline class Password(val password: String) inline class Password(val password: String)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
abstract class AbstractBaseClass abstract class AbstractBaseClass
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
abstract class AbstractBaseClass abstract class AbstractBaseClass
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
interface IFoo interface IFoo
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
interface IFoo interface IFoo
......
// FIR_IDENTICAL // FIR_IDENTICAL
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Test(val x: Int = 42) inline class Test(val x: Int = 42)
\ No newline at end of file
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class A0(val x: Int) inline class A0(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class A0(val x: Int) inline class A0(val x: Int)
......
// !LANGUAGE: +JvmInlineValueClasses
inline class IC(val i: Int)
\ No newline at end of file
// !LANGUAGE: +JvmInlineValueClasses
<!INLINE_CLASS_DEPRECATED!>inline<!> class IC(val i: Int)
package
public final inline class IC {
public constructor IC(/*0*/ i: kotlin.Int)
public final val i: kotlin.Int
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
}
// FIR_IDENTICAL // FIR_IDENTICAL
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class UInt(val x: Int) inline class UInt(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Foo<T>(val x: T) inline class Foo<T>(val x: T)
inline class FooNullable<T>(val x: T?) inline class FooNullable<T>(val x: T?)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Foo<T>(val x: <!INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>) inline class Foo<T>(val x: <!INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T<!>)
inline class FooNullable<T>(val x: <!INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>) inline class FooNullable<T>(val x: <!INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE!>T?<!>)
......
// FIR_IDENTICAL // FIR_IDENTICAL
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
import kotlin.reflect.KClass import kotlin.reflect.KClass
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
inline class Foo(val x: Int) { inline class Foo(val x: Int) {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
inline class Foo(val x: Int) { inline class Foo(val x: Int) {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// FIR_IDENTICAL // FIR_IDENTICAL
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
inline class Foo(val x: Int) { inline class Foo(val x: Int) {
......
// FIR_IDENTICAL // FIR_IDENTICAL
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class ConstructorWithDefaultVisibility(val x: Int) inline class ConstructorWithDefaultVisibility(val x: Int)
inline class PublicConstructor public constructor(val x: Int) inline class PublicConstructor public constructor(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
interface A { interface A {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
interface A { interface A {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Test1(val x: Test1) inline class Test1(val x: Test1)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Test1(val x: <!INLINE_CLASS_CANNOT_BE_RECURSIVE!>Test1<!>) inline class Test1(val x: <!INLINE_CLASS_CANNOT_BE_RECURSIVE!>Test1<!>)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class IC1(val x: Any) { inline class IC1(val x: Any) {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class IC1(val x: Any) { inline class IC1(val x: Any) {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class IC(val a: Any) { inline class IC(val a: Any) {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class IC(val a: Any) { inline class IC(val a: Any) {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE, -UNUSED_ANONYMOUS_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE, -UNUSED_ANONYMOUS_PARAMETER
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE, -UNUSED_ANONYMOUS_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE, -UNUSED_ANONYMOUS_PARAMETER
inline class Foo(val x: Int) inline class Foo(val x: Int)
......
// FIR_IDENTICAL // FIR_IDENTICAL
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// FILE: kt1.kt // FILE: kt1.kt
package kt package kt
......
// !LANGUAGE: +MultiPlatformProjects, +InlineClasses // !LANGUAGE: +MultiPlatformProjects, +InlineClasses, -JvmInlineValueClasses
// MODULE: m1-common // MODULE: m1-common
// FILE: common.kt // FILE: common.kt
......
// !LANGUAGE: +MultiPlatformProjects, +InlineClasses // !LANGUAGE: +MultiPlatformProjects, +InlineClasses, -JvmInlineValueClasses
// MODULE: m1-common // MODULE: m1-common
// FILE: common.kt // FILE: common.kt
......
// !DIAGNOSTICS: -EXPERIMENTAL_FEATURE_WARNING // !DIAGNOSTICS: -EXPERIMENTAL_FEATURE_WARNING
// !LANGUAGE: -JvmInlineValueClasses
// SKIP_TXT // SKIP_TXT
inline class Value1(val inner: Int) inline class Value1(val inner: Int)
......
// !DIAGNOSTICS: -EXPERIMENTAL_FEATURE_WARNING // !DIAGNOSTICS: -EXPERIMENTAL_FEATURE_WARNING
// !LANGUAGE: -JvmInlineValueClasses
// SKIP_TXT // SKIP_TXT
<!NO_EXPLICIT_VISIBILITY_IN_API_MODE!>inline class Value1<!>(<!NO_EXPLICIT_VISIBILITY_IN_API_MODE!>val inner<!>: Int) <!NO_EXPLICIT_VISIBILITY_IN_API_MODE!>inline class Value1<!>(<!NO_EXPLICIT_VISIBILITY_IN_API_MODE!>val inner<!>: Int)
......
...@@ -6,7 +6,7 @@ package kotlin.jvm ...@@ -6,7 +6,7 @@ package kotlin.jvm
annotation class JvmInline annotation class JvmInline
<!JVM_INLINE_WITHOUT_VALUE_CLASS!>@JvmInline<!> <!JVM_INLINE_WITHOUT_VALUE_CLASS!>@JvmInline<!>
inline class IC(val a: Any) <!INLINE_CLASS_DEPRECATED!>inline<!> class IC(val a: Any)
@JvmInline @JvmInline
value class VC(val a: Any) value class VC(val a: Any)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
external inline class <!WRONG_EXTERNAL_DECLARATION!>C(<!EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER!>val a: Int<!>)<!> { external inline class <!WRONG_EXTERNAL_DECLARATION!>C(<!EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER!>val a: Int<!>)<!> {
fun foo() fun foo()
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// FILE: uint.kt // FILE: uint.kt
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class IC(val i: Int) inline class IC(val i: Int)
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER, -PLATFORM_CLASS_MAPPED_TO_KOTLIN // !DIAGNOSTICS: -UNUSED_PARAMETER, -PLATFORM_CLASS_MAPPED_TO_KOTLIN
// WITH_RUNTIME // WITH_RUNTIME
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER, -PLATFORM_CLASS_MAPPED_TO_KOTLIN // !DIAGNOSTICS: -UNUSED_PARAMETER, -PLATFORM_CLASS_MAPPED_TO_KOTLIN
// WITH_RUNTIME // WITH_RUNTIME
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class Foo(val x: Int) { inline class Foo(val x: Int) {
......
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
inline class Foo(val x: Int) { inline class Foo(val x: Int) {
......
// !LANGUAGE: +NestedClassesInAnnotations +InlineClasses // !LANGUAGE: +NestedClassesInAnnotations +InlineClasses -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
@kotlin.jvm.JvmField @kotlin.jvm.JvmField
......
// !LANGUAGE: +NestedClassesInAnnotations +InlineClasses // !LANGUAGE: +NestedClassesInAnnotations +InlineClasses -JvmInlineValueClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
<!WRONG_ANNOTATION_TARGET!>@kotlin.jvm.JvmField<!> <!WRONG_ANNOTATION_TARGET!>@kotlin.jvm.JvmField<!>
......
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Z(val x: Int) inline class Z(val x: Int)
......
// !DIAGNOSTICS: -UNUSED_PARAMETER // !DIAGNOSTICS: -UNUSED_PARAMETER
// !LANGUAGE: +InlineClasses // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
inline class Z(val x: Int) inline class Z(val x: Int)
......
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
// !LANGUAGE: +InlineClasses -AllowResultInReturnType // !LANGUAGE: +InlineClasses -AllowResultInReturnType, -JvmInlineValueClasses
typealias ResultAlias<T> = Result<T> typealias ResultAlias<T> = Result<T>
......
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
// !LANGUAGE: +InlineClasses -AllowResultInReturnType // !LANGUAGE: +InlineClasses -AllowResultInReturnType, -JvmInlineValueClasses
typealias ResultAlias<T> = Result<T> typealias ResultAlias<T> = Result<T>
......
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
// !LANGUAGE: +InlineClasses +AllowResultInReturnType // !LANGUAGE: +InlineClasses +AllowResultInReturnType, -JvmInlineValueClasses
typealias ResultAlias<T> = Result<T> typealias ResultAlias<T> = Result<T>
......
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
// !LANGUAGE: +InlineClasses +AllowResultInReturnType // !LANGUAGE: +InlineClasses +AllowResultInReturnType, -JvmInlineValueClasses
typealias ResultAlias<T> = Result<T> typealias ResultAlias<T> = Result<T>
......
...@@ -15011,6 +15011,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { ...@@ -15011,6 +15011,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/inlineClasses/inlineClassDeclarationCheck.kt"); runTest("compiler/testData/diagnostics/tests/inlineClasses/inlineClassDeclarationCheck.kt");
} }
@Test
@TestMetadata("inlineClassDeprecated.kt")
public void testInlineClassDeprecated() throws Exception {
runTest("compiler/testData/diagnostics/tests/inlineClasses/inlineClassDeprecated.kt");
}
@Test @Test
@TestMetadata("inlineClassImplementsCollection.kt") @TestMetadata("inlineClassImplementsCollection.kt")
public void testInlineClassImplementsCollection() throws Exception { public void testInlineClassImplementsCollection() throws Exception {
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册