K2: Add KtDiagnosticRenderers.CLASS_ID to render ClassId FQNs with dots
KT-MR-13391
This commit is contained in:
committed by
Space Team
parent
1766d0e86a
commit
f53f92cdd6
+6
@@ -5290,6 +5290,12 @@ public class DiagnosticCompilerTestFirTestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/castForFunctionsWithDifferentArities.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassIdDiagnosticRendering.kt")
|
||||
public void testClassIdDiagnosticRendering() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/ClassIdDiagnosticRendering.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classLiteralForParameter.kt")
|
||||
public void testClassLiteralForParameter() throws Exception {
|
||||
|
||||
+6
@@ -5290,6 +5290,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/castForFunctionsWithDifferentArities.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassIdDiagnosticRendering.kt")
|
||||
public void testClassIdDiagnosticRendering() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/ClassIdDiagnosticRendering.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classLiteralForParameter.kt")
|
||||
public void testClassLiteralForParameter() throws Exception {
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
FILE: ClassIdDiagnosticRendering.kt
|
||||
package a.b.c
|
||||
|
||||
@R|kotlin/RequiresOptIn|() public final annotation class Marker : R|kotlin/Annotation| {
|
||||
public constructor(): R|a/b/c/Marker| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
}
|
||||
@R|a/b/c/Marker|() public final class Some : R|kotlin/Any| {
|
||||
public constructor(): R|a/b/c/Some| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|a/b/c/Some.Some|()
|
||||
}
|
||||
public final annotation class DummyAnnotation : R|kotlin/Annotation| {
|
||||
public constructor(): R|a/b/c/DummyAnnotation| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
}
|
||||
@R|kotlin/SubclassOptInRequired|(markerClass = <getClass>(Q|a/b/c/DummyAnnotation|)) public open class IncorrectSubclassOptInArgumentMarker : R|kotlin/Any| {
|
||||
public constructor(): R|a/b/c/IncorrectSubclassOptInArgumentMarker| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
}
|
||||
internal abstract fun interface StableInterface : R|kotlin/Any| {
|
||||
@R|a/b/c/Marker|() public abstract fun experimentalMethod(): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
public final fun testOverrides(): R|kotlin/Unit| {
|
||||
object : R|a/b/c/StableInterface| {
|
||||
private constructor(): R|a/b/c/<anonymous>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public open override fun experimentalMethod(): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public final actual typealias TypealiasToKotlinPkg = R|kotlin/Deprecated|
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// WITH_EXTENDED_CHECKERS
|
||||
|
||||
package a.b.c
|
||||
|
||||
import <!PLATFORM_CLASS_MAPPED_TO_KOTLIN("kotlin.jvm.functions.Function0")!>kotlin.jvm.functions.Function0<!>
|
||||
|
||||
@RequiresOptIn
|
||||
annotation class Marker
|
||||
|
||||
@Marker
|
||||
class Some
|
||||
|
||||
fun main() {
|
||||
<!OPT_IN_USAGE_ERROR("a.b.c.Marker; This declaration needs opt-in. Its usage must be marked with '@a.b.c.Marker' or '@OptIn(a.b.c.Marker::class)'")!>Some<!>()
|
||||
}
|
||||
|
||||
annotation class DummyAnnotation
|
||||
|
||||
<!OPT_IN_ARGUMENT_IS_NOT_MARKER("a.b.c.DummyAnnotation")!>@SubclassOptInRequired(DummyAnnotation::class)<!>
|
||||
open class IncorrectSubclassOptInArgumentMarker
|
||||
|
||||
internal fun interface StableInterface {
|
||||
@Marker
|
||||
fun experimentalMethod()
|
||||
}
|
||||
|
||||
fun testOverrides() {
|
||||
object : StableInterface {
|
||||
override fun <!OPT_IN_OVERRIDE_ERROR("a.b.c.Marker; Base declaration of supertype 'StableInterface' needs opt-in. The declaration override must be annotated with '@a.b.c.Marker' or '@OptIn(a.b.c.Marker::class)'")!>experimentalMethod<!>() {}
|
||||
}
|
||||
}
|
||||
|
||||
<!NOT_A_MULTIPLATFORM_COMPILATION!>actual<!> typealias TypealiasToKotlinPkg = <!ACTUAL_TYPEALIAS_TO_SPECIAL_ANNOTATION("kotlin.Deprecated")!>kotlin.Deprecated<!>
|
||||
+6
@@ -5290,6 +5290,12 @@ public class FirLightTreeDiagnosticsTestGenerated extends AbstractFirLightTreeDi
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/castForFunctionsWithDifferentArities.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassIdDiagnosticRendering.kt")
|
||||
public void testClassIdDiagnosticRendering() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/ClassIdDiagnosticRendering.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classLiteralForParameter.kt")
|
||||
public void testClassLiteralForParameter() throws Exception {
|
||||
|
||||
+6
@@ -5290,6 +5290,12 @@ public class FirPsiDiagnosticTestGenerated extends AbstractFirPsiDiagnosticTest
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/castForFunctionsWithDifferentArities.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassIdDiagnosticRendering.kt")
|
||||
public void testClassIdDiagnosticRendering() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/ClassIdDiagnosticRendering.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classLiteralForParameter.kt")
|
||||
public void testClassLiteralForParameter() throws Exception {
|
||||
|
||||
+8
-7
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.analysis.diagnostics
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import org.jetbrains.kotlin.diagnostics.KtDiagnosticFactoryToRendererMap
|
||||
import org.jetbrains.kotlin.diagnostics.KtDiagnosticRenderers.CLASS_ID
|
||||
import org.jetbrains.kotlin.diagnostics.KtDiagnosticRenderers.COLLECTION
|
||||
import org.jetbrains.kotlin.diagnostics.KtDiagnosticRenderers.EMPTY
|
||||
import org.jetbrains.kotlin.diagnostics.KtDiagnosticRenderers.FUNCTION_PARAMETERS
|
||||
@@ -890,7 +891,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
map.put(SINGLETON_IN_SUPERTYPE, "Cannot extend an object.")
|
||||
map.put(NULLABLE_SUPERTYPE, "Supertypes cannot be nullable.")
|
||||
map.put(REDUNDANT_NULLABLE, "Redundant '?'.")
|
||||
map.put(PLATFORM_CLASS_MAPPED_TO_KOTLIN, "This class is not recommended for use in Kotlin. Use ''{0}'' instead.", TO_STRING)
|
||||
map.put(PLATFORM_CLASS_MAPPED_TO_KOTLIN, "This class is not recommended for use in Kotlin. Use ''{0}'' instead.", CLASS_ID)
|
||||
map.put(MANY_CLASSES_IN_SUPERTYPE_LIST, "Only one class can appear in a supertype list.")
|
||||
map.put(SUPERTYPE_APPEARS_TWICE, "A supertype appears twice.")
|
||||
map.put(CLASS_IN_SUPERTYPE_FOR_ENUM, "Enum classes cannot extend classes.")
|
||||
@@ -1049,11 +1050,11 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
)
|
||||
|
||||
// OptIn
|
||||
map.put(OPT_IN_USAGE, "{1}", TO_STRING, STRING)
|
||||
map.put(OPT_IN_USAGE_ERROR, "{1}", TO_STRING, STRING)
|
||||
map.put(OPT_IN_USAGE, "{1}", CLASS_ID, STRING)
|
||||
map.put(OPT_IN_USAGE_ERROR, "{1}", CLASS_ID, STRING)
|
||||
|
||||
map.put(OPT_IN_OVERRIDE, "{1}", TO_STRING, STRING)
|
||||
map.put(OPT_IN_OVERRIDE_ERROR, "{1}", TO_STRING, STRING)
|
||||
map.put(OPT_IN_OVERRIDE, "{1}", CLASS_ID, STRING)
|
||||
map.put(OPT_IN_OVERRIDE_ERROR, "{1}", CLASS_ID, STRING)
|
||||
|
||||
map.put(OPT_IN_IS_NOT_ENABLED, "This annotation should be used with the compiler argument '-opt-in=kotlin.RequiresOptIn'.")
|
||||
map.put(OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION, "This class can only be used as an annotation.")
|
||||
@@ -1065,7 +1066,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
map.put(
|
||||
OPT_IN_ARGUMENT_IS_NOT_MARKER,
|
||||
"Annotation ''{0}'' is not an opt-in requirement marker; therefore, its usage in @OptIn is ignored.",
|
||||
TO_STRING
|
||||
CLASS_ID
|
||||
)
|
||||
map.put(
|
||||
OPT_IN_MARKER_WITH_WRONG_TARGET,
|
||||
@@ -2072,7 +2073,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
map.put(
|
||||
ACTUAL_TYPEALIAS_TO_SPECIAL_ANNOTATION,
|
||||
"''actual typealias'' to annotation which affects code compilation can lead to incorrect behavior. Instead, use ''{0}'' annotation directly.",
|
||||
TO_STRING
|
||||
CLASS_ID
|
||||
)
|
||||
map.put(
|
||||
ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT,
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.diagnostics
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.diagnostics.rendering.ContextIndependentParameterRenderer
|
||||
import org.jetbrains.kotlin.diagnostics.rendering.Renderer
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
object KtDiagnosticRenderers {
|
||||
val NULLABLE_STRING = Renderer<String?> { it ?: "null" }
|
||||
@@ -33,6 +34,10 @@ object KtDiagnosticRenderers {
|
||||
|
||||
val FUNCTION_PARAMETERS = Renderer { hasValueParameters: Boolean -> if (hasValueParameters) "..." else "" }
|
||||
|
||||
val CLASS_ID = Renderer { classId: ClassId ->
|
||||
classId.asFqNameString()
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
fun <T> COLLECTION(renderer: ContextIndependentParameterRenderer<T>): ContextIndependentParameterRenderer<Collection<T>> {
|
||||
return Renderer { list ->
|
||||
|
||||
Reference in New Issue
Block a user