[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
|
||||
|
||||
Reference in New Issue
Block a user