[FIR] Add INNER_JVM_RECORD diagnostic
This commit is contained in:
+1
@@ -69,6 +69,7 @@ object JVM_DIAGNOSTICS_LIST : DiagnosticList("FirJvmErrors") {
|
||||
val NON_DATA_CLASS_JVM_RECORD by error<PsiElement>()
|
||||
val JVM_RECORD_NOT_VAL_PARAMETER by error<PsiElement>()
|
||||
val JVM_RECORD_NOT_LAST_VARARG_PARAMETER by error<PsiElement>()
|
||||
val INNER_JVM_RECORD by error<PsiElement>(PositioningStrategy.INNER_MODIFIER)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -58,5 +58,6 @@ object FirJvmErrors {
|
||||
val NON_DATA_CLASS_JVM_RECORD by error0<PsiElement>()
|
||||
val JVM_RECORD_NOT_VAL_PARAMETER by error0<PsiElement>()
|
||||
val JVM_RECORD_NOT_LAST_VARARG_PARAMETER by error0<PsiElement>()
|
||||
val INNER_JVM_RECORD by error0<PsiElement>(SourceElementPositioningStrategies.INNER_MODIFIER)
|
||||
|
||||
}
|
||||
|
||||
+5
@@ -43,6 +43,11 @@ object FirJvmRecordChecker : FirRegularClassChecker() {
|
||||
return
|
||||
}
|
||||
|
||||
if (declaration.isInner) {
|
||||
reporter.reportOn(declaration.source, FirJvmErrors.INNER_JVM_RECORD, context)
|
||||
return
|
||||
}
|
||||
|
||||
if (!declaration.isFinal) {
|
||||
reporter.reportOn(declaration.source, FirJvmErrors.NON_FINAL_JVM_RECORD, context)
|
||||
return
|
||||
|
||||
-56
@@ -1,56 +0,0 @@
|
||||
// !API_VERSION: 1.5
|
||||
// !LANGUAGE: +JvmRecordSupport
|
||||
// SKIP_TXT
|
||||
// JVM_TARGET: 15
|
||||
// ENABLE_JVM_PREVIEW
|
||||
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
class A0
|
||||
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
class A1 {
|
||||
constructor()
|
||||
}
|
||||
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
class A2()
|
||||
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
class A3(name: String)
|
||||
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
class A4(var name: String)
|
||||
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
class A5(vararg val name: String, y: Int)
|
||||
|
||||
@JvmRecord
|
||||
<!NON_FINAL_JVM_RECORD!>open<!> class A6(val x: String)
|
||||
|
||||
@JvmRecord
|
||||
<!NON_FINAL_JVM_RECORD!>abstract<!> class A7(val x: String)
|
||||
|
||||
@JvmRecord
|
||||
<!NON_FINAL_JVM_RECORD!>sealed<!> class A8(val x: String)
|
||||
|
||||
@JvmRecord
|
||||
<!ENUM_JVM_RECORD!>enum<!> class A9(val x: String) {
|
||||
X("");
|
||||
}
|
||||
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
class A10(
|
||||
val x: String,
|
||||
val y: Int,
|
||||
vararg val z: Double,
|
||||
)
|
||||
|
||||
fun main() {
|
||||
<!LOCAL_JVM_RECORD!>@JvmRecord<!>
|
||||
class Local
|
||||
}
|
||||
|
||||
class Outer {
|
||||
<!NON_DATA_CLASS_JVM_RECORD!>@JvmRecord<!>
|
||||
inner class Inner(val name: String)
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !API_VERSION: 1.5
|
||||
// !LANGUAGE: +JvmRecordSupport
|
||||
// SKIP_TXT
|
||||
|
||||
+6
@@ -3580,4 +3580,10 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJvmErrors.INNER_JVM_RECORD) { firDiagnostic ->
|
||||
InnerJvmRecordImpl(
|
||||
firDiagnostic as FirPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -2493,4 +2493,8 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
override val diagnosticClass get() = JvmRecordNotLastVarargParameter::class
|
||||
}
|
||||
|
||||
abstract class InnerJvmRecord : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = InnerJvmRecord::class
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+7
@@ -4042,3 +4042,10 @@ internal class JvmRecordNotLastVarargParameterImpl(
|
||||
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class InnerJvmRecordImpl(
|
||||
firDiagnostic: FirPsiDiagnostic,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.InnerJvmRecord(), KtAbstractFirDiagnostic<PsiElement> {
|
||||
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user