mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-03-10 08:31:29 +00:00
[FIR] Add missing messages for jvm diagnostics and fix some tests
This commit is contained in:
committed by
TeamCityServer
parent
3b21759697
commit
894a446585
@@ -7,14 +7,64 @@ package org.jetbrains.kotlin.fir.analysis.jvm.diagnostics
|
||||
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDefaultErrorMessages
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_TYPE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.TO_STRING
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.CONFLICTING_JVM_DECLARATIONS
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.DEPRECATED_JAVA_ANNOTATION
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.JAVA_TYPE_MISMATCH
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.JVM_PACKAGE_NAME_CANNOT_BE_EMPTY
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.JVM_PACKAGE_NAME_MUST_BE_VALID_NAME
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.JVM_PACKAGE_NAME_NOT_SUPPORTED_IN_FILES_WITH_CLASSES
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.OVERLOADS_ABSTRACT
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.OVERLOADS_INTERFACE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.OVERLOADS_LOCAL
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.OVERLOADS_PRIVATE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.STRICTFP_ON_CLASS
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SUPER_CALL_WITH_DEFAULT_PARAMETERS
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SYNCHRONIZED_IN_INTERFACE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SYNCHRONIZED_ON_ABSTRACT
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SYNCHRONIZED_ON_INLINE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.UPPER_BOUND_CANNOT_BE_ARRAY
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.VOLATILE_ON_DELEGATE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.VOLATILE_ON_VALUE
|
||||
|
||||
object FirJvmDefaultErrorMessages {
|
||||
fun installJvmErrorMessages() {
|
||||
FirDefaultErrorMessages.Companion.MAP.also { map ->
|
||||
map.put(CONFLICTING_JVM_DECLARATIONS, "Platform declaration clash")
|
||||
map.put(JAVA_TYPE_MISMATCH, "Java type mismatch expected {0} but found {1}. Use explicit cast", RENDER_TYPE, RENDER_TYPE)
|
||||
map.put(UPPER_BOUND_CANNOT_BE_ARRAY, "Upper bound of a type parameter cannot be an array")
|
||||
map.put(STRICTFP_ON_CLASS, "'@Strictfp' annotation on classes is unsupported yet")
|
||||
map.put(VOLATILE_ON_VALUE, "'@Volatile' annotation cannot be used on immutable properties")
|
||||
map.put(VOLATILE_ON_DELEGATE, "'@Volatile' annotation cannot be used on delegated properties")
|
||||
map.put(SYNCHRONIZED_ON_ABSTRACT, "'@Synchronized' annotation cannot be used on abstract functions")
|
||||
map.put(SYNCHRONIZED_ON_INLINE, "'@Synchronized' annotation has no effect on inline functions")
|
||||
map.put(SYNCHRONIZED_IN_INTERFACE, "'@Synchronized' annotation cannot be used on interface members")
|
||||
map.put(OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS, "'@JvmOverloads' annotation has no effect for methods without default arguments")
|
||||
map.put(OVERLOADS_ABSTRACT, "'@JvmOverloads' annotation cannot be used on abstract methods")
|
||||
map.put(OVERLOADS_INTERFACE, "'@JvmOverloads' annotation cannot be used on interface methods")
|
||||
map.put(OVERLOADS_PRIVATE, "'@JvmOverloads' annotation has no effect on private declarations")
|
||||
map.put(OVERLOADS_LOCAL, "'@JvmOverloads' annotation cannot be used on local declarations")
|
||||
map.put(
|
||||
OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR,
|
||||
"'@JvmOverloads' annotation cannot be used on constructors of annotation classes"
|
||||
)
|
||||
map.put(DEPRECATED_JAVA_ANNOTATION, "This annotation is deprecated in Kotlin. Use ''@{0}'' instead", TO_STRING)
|
||||
map.put(JVM_PACKAGE_NAME_CANNOT_BE_EMPTY, "''@JvmPackageName'' annotation value cannot be empty")
|
||||
map.put(
|
||||
JVM_PACKAGE_NAME_MUST_BE_VALID_NAME,
|
||||
"''@JvmPackageName'' annotation value must be a valid dot-qualified name of a package"
|
||||
)
|
||||
map.put(
|
||||
JVM_PACKAGE_NAME_NOT_SUPPORTED_IN_FILES_WITH_CLASSES,
|
||||
"''@JvmPackageName'' annotation is not supported for files with class declarations"
|
||||
)
|
||||
map.put(
|
||||
SUPER_CALL_WITH_DEFAULT_PARAMETERS,
|
||||
"Super-calls with default arguments are not allowed. Please specify all arguments of ''super.{0}'' explicitly",
|
||||
TO_STRING
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
// WITH_RUNTIME
|
||||
// IGNORE_BACKEND: JVM, JVM_IR
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
fun <T : IntArray> test(array: T): Int {
|
||||
var sum = 0
|
||||
|
||||
@@ -8,57 +8,57 @@ annotation class Case12_1
|
||||
annotation class Case12_2
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
annotation class Case1 @JvmOverloads constructor(val x: Int)
|
||||
annotation class Case1 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
annotation class Case2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 JvmOverloads Case12_1] constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
|
||||
annotation class Case2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>JvmOverloads<!> Case12_1] constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
annotation class Case3 @Case12_2 @Case12_1 @Case12_2 @`JvmOverloads` @Case12_2 @Case12_2 constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
|
||||
annotation class Case3 @Case12_2 @Case12_1 @Case12_2 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@`JvmOverloads`<!> @Case12_2 @Case12_2 constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
|
||||
|
||||
// TESTCASE NUMBER: 4
|
||||
annotation class Case4 @Case12_2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 JvmOverloads Case12_1] @Case12_2 @Case12_2 constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
|
||||
annotation class Case4 @Case12_2 @[Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 Case12_2 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>JvmOverloads<!> Case12_1] @Case12_2 @Case12_2 constructor(<!MISSING_VAL_ON_ANNOTATION_PARAMETER!>x: Int = 10<!>)
|
||||
|
||||
// TESTCASE NUMBER: 5
|
||||
annotation class Case5 @[JvmOverloads] constructor(val x: Int)
|
||||
annotation class Case5 @[<!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>JvmOverloads<!>] constructor(val x: Int)
|
||||
|
||||
// TESTCASE NUMBER: 6
|
||||
annotation class Case6 @JvmOverloads constructor()
|
||||
annotation class Case6 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor()
|
||||
|
||||
// TESTCASE NUMBER: 7
|
||||
annotation class Case7@JvmOverloads constructor() {}
|
||||
annotation class Case7<!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor() {}
|
||||
|
||||
// TESTCASE NUMBER: 8
|
||||
annotation class Case8 @`JvmOverloads` constructor()
|
||||
annotation class Case8 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@`JvmOverloads`<!> constructor()
|
||||
|
||||
// TESTCASE NUMBER: 9
|
||||
annotation class Case9 <A, Case12_1 : A, Case12_2 : Case12_1, D : Case12_2, E : D> @JvmOverloads constructor(val x: Int)
|
||||
annotation class Case9 <A, Case12_1 : A, Case12_2 : Case12_1, D : Case12_2, E : D> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
|
||||
|
||||
// TESTCASE NUMBER: 10
|
||||
annotation class Case10 <T> @JvmOverloads constructor(val x: Int)
|
||||
annotation class Case10 <T> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
|
||||
|
||||
// TESTCASE NUMBER: 11
|
||||
annotation class Case11 <T : Number, K : Comparable<K>> @JvmOverloads constructor(val x: Int)
|
||||
annotation class Case11 <T : Number, K : Comparable<K>> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
|
||||
|
||||
// TESTCASE NUMBER: 12
|
||||
annotation class Case12 <T> @JvmOverloads constructor(val x: Int) where T: Number
|
||||
annotation class Case12 <T> <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int) where T: Number
|
||||
|
||||
// TESTCASE NUMBER: 13
|
||||
annotation class Case13 constructor(val x: Int) {
|
||||
annotation class Case1 @JvmOverloads constructor(val x: Int)
|
||||
annotation class Case1 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 14
|
||||
annotation class Case14 @JvmOverloads constructor(val x: Int) {
|
||||
annotation class Case14 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int) {
|
||||
annotation class Case1 constructor(val x: Int)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 15
|
||||
object Case15 {
|
||||
annotation class Case15 @JvmOverloads constructor(val x: Int)
|
||||
annotation class Case15 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 16
|
||||
class Case16 {
|
||||
annotation class Case16 @JvmOverloads constructor(val x: Int)
|
||||
annotation class Case16 <!OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_ERROR!>@JvmOverloads<!> constructor(val x: Int)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user