FIR: allow nullable types in diagnostic parameters
This commit is contained in:
committed by
Ilya Kirillov
parent
594fbbb4ef
commit
cceb7197a5
+3
@@ -89,6 +89,9 @@ object ErrorListDiagnosticListRenderer : DiagnosticListRenderer() {
|
|||||||
}
|
}
|
||||||
print(">")
|
print(">")
|
||||||
}
|
}
|
||||||
|
if (type.isMarkedNullable) {
|
||||||
|
print("?")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun SmartPrinter.printTypeArgument(typeArgument: KTypeProjection) {
|
private fun SmartPrinter.printTypeArgument(typeArgument: KTypeProjection) {
|
||||||
|
|||||||
+12
-12
@@ -33,25 +33,25 @@ sealed class FirSimpleDiagnostic<out E : FirSourceElement> : FirDiagnostic<E>()
|
|||||||
abstract override val factory: FirDiagnosticFactory0<*>
|
abstract override val factory: FirDiagnosticFactory0<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class FirDiagnosticWithParameters1<out E : FirSourceElement, A : Any> : FirDiagnostic<E>() {
|
sealed class FirDiagnosticWithParameters1<out E : FirSourceElement, A> : FirDiagnostic<E>() {
|
||||||
abstract val a: A
|
abstract val a: A
|
||||||
abstract override val factory: FirDiagnosticFactory1<*, A>
|
abstract override val factory: FirDiagnosticFactory1<*, A>
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class FirDiagnosticWithParameters2<out E : FirSourceElement, A : Any, B : Any> : FirDiagnostic<E>() {
|
sealed class FirDiagnosticWithParameters2<out E : FirSourceElement, A, B> : FirDiagnostic<E>() {
|
||||||
abstract val a: A
|
abstract val a: A
|
||||||
abstract val b: B
|
abstract val b: B
|
||||||
abstract override val factory: FirDiagnosticFactory2<*, A, B>
|
abstract override val factory: FirDiagnosticFactory2<*, A, B>
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class FirDiagnosticWithParameters3<out E : FirSourceElement, A : Any, B : Any, C : Any> : FirDiagnostic<E>() {
|
sealed class FirDiagnosticWithParameters3<out E : FirSourceElement, A, B, C> : FirDiagnostic<E>() {
|
||||||
abstract val a: A
|
abstract val a: A
|
||||||
abstract val b: B
|
abstract val b: B
|
||||||
abstract val c: C
|
abstract val c: C
|
||||||
abstract override val factory: FirDiagnosticFactory3<*, A, B, C>
|
abstract override val factory: FirDiagnosticFactory3<*, A, B, C>
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class FirDiagnosticWithParameters4<out E : FirSourceElement, A : Any, B : Any, C : Any, D : Any> : FirDiagnostic<E>() {
|
sealed class FirDiagnosticWithParameters4<out E : FirSourceElement, A, B, C, D> : FirDiagnostic<E>() {
|
||||||
abstract val a: A
|
abstract val a: A
|
||||||
abstract val b: B
|
abstract val b: B
|
||||||
abstract val c: C
|
abstract val c: C
|
||||||
@@ -77,14 +77,14 @@ data class FirPsiSimpleDiagnostic<P : PsiElement>(
|
|||||||
override val factory: FirDiagnosticFactory0<P>
|
override val factory: FirDiagnosticFactory0<P>
|
||||||
) : FirSimpleDiagnostic<FirPsiSourceElement<P>>(), FirPsiDiagnostic<P>
|
) : FirSimpleDiagnostic<FirPsiSourceElement<P>>(), FirPsiDiagnostic<P>
|
||||||
|
|
||||||
data class FirPsiDiagnosticWithParameters1<P : PsiElement, A : Any>(
|
data class FirPsiDiagnosticWithParameters1<P : PsiElement, A>(
|
||||||
override val element: FirPsiSourceElement<P>,
|
override val element: FirPsiSourceElement<P>,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val severity: Severity,
|
override val severity: Severity,
|
||||||
override val factory: FirDiagnosticFactory1<P, A>
|
override val factory: FirDiagnosticFactory1<P, A>
|
||||||
) : FirDiagnosticWithParameters1<FirPsiSourceElement<P>, A>(), FirPsiDiagnostic<P>
|
) : FirDiagnosticWithParameters1<FirPsiSourceElement<P>, A>(), FirPsiDiagnostic<P>
|
||||||
|
|
||||||
data class FirPsiDiagnosticWithParameters2<P : PsiElement, A : Any, B : Any>(
|
data class FirPsiDiagnosticWithParameters2<P : PsiElement, A, B>(
|
||||||
override val element: FirPsiSourceElement<P>,
|
override val element: FirPsiSourceElement<P>,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val b: B,
|
override val b: B,
|
||||||
@@ -92,7 +92,7 @@ data class FirPsiDiagnosticWithParameters2<P : PsiElement, A : Any, B : Any>(
|
|||||||
override val factory: FirDiagnosticFactory2<P, A, B>
|
override val factory: FirDiagnosticFactory2<P, A, B>
|
||||||
) : FirDiagnosticWithParameters2<FirPsiSourceElement<P>, A, B>(), FirPsiDiagnostic<P>
|
) : FirDiagnosticWithParameters2<FirPsiSourceElement<P>, A, B>(), FirPsiDiagnostic<P>
|
||||||
|
|
||||||
data class FirPsiDiagnosticWithParameters3<P : PsiElement, A : Any, B : Any, C : Any>(
|
data class FirPsiDiagnosticWithParameters3<P : PsiElement, A, B, C>(
|
||||||
override val element: FirPsiSourceElement<P>,
|
override val element: FirPsiSourceElement<P>,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val b: B,
|
override val b: B,
|
||||||
@@ -101,7 +101,7 @@ data class FirPsiDiagnosticWithParameters3<P : PsiElement, A : Any, B : Any, C :
|
|||||||
override val factory: FirDiagnosticFactory3<P, A, B, C>
|
override val factory: FirDiagnosticFactory3<P, A, B, C>
|
||||||
) : FirDiagnosticWithParameters3<FirPsiSourceElement<P>, A, B, C>(), FirPsiDiagnostic<P>
|
) : FirDiagnosticWithParameters3<FirPsiSourceElement<P>, A, B, C>(), FirPsiDiagnostic<P>
|
||||||
|
|
||||||
data class FirPsiDiagnosticWithParameters4<P : PsiElement, A : Any, B : Any, C : Any, D : Any>(
|
data class FirPsiDiagnosticWithParameters4<P : PsiElement, A, B, C, D>(
|
||||||
override val element: FirPsiSourceElement<P>,
|
override val element: FirPsiSourceElement<P>,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val b: B,
|
override val b: B,
|
||||||
@@ -123,14 +123,14 @@ data class FirLightSimpleDiagnostic(
|
|||||||
override val factory: FirDiagnosticFactory0<*>
|
override val factory: FirDiagnosticFactory0<*>
|
||||||
) : FirSimpleDiagnostic<FirLightSourceElement>(), FirLightDiagnostic
|
) : FirSimpleDiagnostic<FirLightSourceElement>(), FirLightDiagnostic
|
||||||
|
|
||||||
data class FirLightDiagnosticWithParameters1<A : Any>(
|
data class FirLightDiagnosticWithParameters1<A>(
|
||||||
override val element: FirLightSourceElement,
|
override val element: FirLightSourceElement,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val severity: Severity,
|
override val severity: Severity,
|
||||||
override val factory: FirDiagnosticFactory1<*, A>
|
override val factory: FirDiagnosticFactory1<*, A>
|
||||||
) : FirDiagnosticWithParameters1<FirLightSourceElement, A>(), FirLightDiagnostic
|
) : FirDiagnosticWithParameters1<FirLightSourceElement, A>(), FirLightDiagnostic
|
||||||
|
|
||||||
data class FirLightDiagnosticWithParameters2<A : Any, B : Any>(
|
data class FirLightDiagnosticWithParameters2<A, B>(
|
||||||
override val element: FirLightSourceElement,
|
override val element: FirLightSourceElement,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val b: B,
|
override val b: B,
|
||||||
@@ -138,7 +138,7 @@ data class FirLightDiagnosticWithParameters2<A : Any, B : Any>(
|
|||||||
override val factory: FirDiagnosticFactory2<*, A, B>
|
override val factory: FirDiagnosticFactory2<*, A, B>
|
||||||
) : FirDiagnosticWithParameters2<FirLightSourceElement, A, B>(), FirLightDiagnostic
|
) : FirDiagnosticWithParameters2<FirLightSourceElement, A, B>(), FirLightDiagnostic
|
||||||
|
|
||||||
data class FirLightDiagnosticWithParameters3<A : Any, B : Any, C : Any>(
|
data class FirLightDiagnosticWithParameters3<A, B, C>(
|
||||||
override val element: FirLightSourceElement,
|
override val element: FirLightSourceElement,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val b: B,
|
override val b: B,
|
||||||
@@ -147,7 +147,7 @@ data class FirLightDiagnosticWithParameters3<A : Any, B : Any, C : Any>(
|
|||||||
override val factory: FirDiagnosticFactory3<*, A, B, C>
|
override val factory: FirDiagnosticFactory3<*, A, B, C>
|
||||||
) : FirDiagnosticWithParameters3<FirLightSourceElement, A, B, C>(), FirLightDiagnostic
|
) : FirDiagnosticWithParameters3<FirLightSourceElement, A, B, C>(), FirLightDiagnostic
|
||||||
|
|
||||||
data class FirLightDiagnosticWithParameters4<A : Any, B : Any, C : Any, D : Any>(
|
data class FirLightDiagnosticWithParameters4<A, B, C, D>(
|
||||||
override val element: FirLightSourceElement,
|
override val element: FirLightSourceElement,
|
||||||
override val a: A,
|
override val a: A,
|
||||||
override val b: B,
|
override val b: B,
|
||||||
|
|||||||
+7
-7
@@ -55,7 +55,7 @@ class FirDiagnosticFactory0<P : PsiElement>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirDiagnosticFactory1<P : PsiElement, A : Any>(
|
class FirDiagnosticFactory1<P : PsiElement, A>(
|
||||||
name: String,
|
name: String,
|
||||||
severity: Severity,
|
severity: Severity,
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
||||||
@@ -76,7 +76,7 @@ class FirDiagnosticFactory1<P : PsiElement, A : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirDiagnosticFactory2<P : PsiElement, A : Any, B : Any>(
|
class FirDiagnosticFactory2<P : PsiElement, A, B>(
|
||||||
name: String,
|
name: String,
|
||||||
severity: Severity,
|
severity: Severity,
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
||||||
@@ -98,7 +98,7 @@ class FirDiagnosticFactory2<P : PsiElement, A : Any, B : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirDiagnosticFactory3<P : PsiElement, A : Any, B : Any, C : Any>(
|
class FirDiagnosticFactory3<P : PsiElement, A, B, C>(
|
||||||
name: String,
|
name: String,
|
||||||
severity: Severity,
|
severity: Severity,
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
||||||
@@ -121,7 +121,7 @@ class FirDiagnosticFactory3<P : PsiElement, A : Any, B : Any, C : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirDiagnosticFactory4<P : PsiElement, A : Any, B : Any, C : Any, D : Any>(
|
class FirDiagnosticFactory4<P : PsiElement, A, B, C, D>(
|
||||||
name: String,
|
name: String,
|
||||||
severity: Severity,
|
severity: Severity,
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT,
|
||||||
@@ -152,13 +152,13 @@ fun <P : PsiElement> FirDiagnosticFactory0<P>.on(element: FirSourceElement?): Fi
|
|||||||
return element?.let { on(it) }
|
return element?.let { on(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any> FirDiagnosticFactory1<P, A>.on(
|
fun <P : PsiElement, A> FirDiagnosticFactory1<P, A>.on(
|
||||||
element: FirSourceElement?, a: A
|
element: FirSourceElement?, a: A
|
||||||
): FirDiagnosticWithParameters1<*, A>? {
|
): FirDiagnosticWithParameters1<*, A>? {
|
||||||
return element?.let { on(it, a) }
|
return element?.let { on(it, a) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any, B : Any> FirDiagnosticFactory2<P, A, B>.on(
|
fun <P : PsiElement, A, B> FirDiagnosticFactory2<P, A, B>.on(
|
||||||
element: FirSourceElement?,
|
element: FirSourceElement?,
|
||||||
a: A,
|
a: A,
|
||||||
b: B
|
b: B
|
||||||
@@ -166,7 +166,7 @@ fun <P : PsiElement, A : Any, B : Any> FirDiagnosticFactory2<P, A, B>.on(
|
|||||||
return element?.let { on(it, a, b) }
|
return element?.let { on(it, a, b) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any, B : Any, C : Any> FirDiagnosticFactory3<P, A, B, C>.on(
|
fun <P : PsiElement, A, B, C> FirDiagnosticFactory3<P, A, B, C>.on(
|
||||||
element: FirSourceElement?,
|
element: FirSourceElement?,
|
||||||
a: A,
|
a: A,
|
||||||
b: B,
|
b: B,
|
||||||
|
|||||||
+11
-11
@@ -16,19 +16,19 @@ fun <P : PsiElement> warning0(
|
|||||||
return DiagnosticFactory0DelegateProvider(Severity.WARNING, positioningStrategy)
|
return DiagnosticFactory0DelegateProvider(Severity.WARNING, positioningStrategy)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any> warning1(
|
fun <P : PsiElement, A> warning1(
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
||||||
): DiagnosticFactory1DelegateProvider<P, A> {
|
): DiagnosticFactory1DelegateProvider<P, A> {
|
||||||
return DiagnosticFactory1DelegateProvider(Severity.WARNING, positioningStrategy)
|
return DiagnosticFactory1DelegateProvider(Severity.WARNING, positioningStrategy)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any, B : Any> warning2(
|
fun <P : PsiElement, A, B> warning2(
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
||||||
): DiagnosticFactory2DelegateProvider<P, A, B> {
|
): DiagnosticFactory2DelegateProvider<P, A, B> {
|
||||||
return DiagnosticFactory2DelegateProvider(Severity.WARNING, positioningStrategy)
|
return DiagnosticFactory2DelegateProvider(Severity.WARNING, positioningStrategy)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any, B : Any, C : Any> warning3(
|
fun <P : PsiElement, A, B, C> warning3(
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
||||||
): DiagnosticFactory3DelegateProvider<P, A, B, C> {
|
): DiagnosticFactory3DelegateProvider<P, A, B, C> {
|
||||||
return DiagnosticFactory3DelegateProvider(Severity.WARNING, positioningStrategy)
|
return DiagnosticFactory3DelegateProvider(Severity.WARNING, positioningStrategy)
|
||||||
@@ -40,25 +40,25 @@ fun <P : PsiElement> error0(
|
|||||||
return DiagnosticFactory0DelegateProvider(Severity.ERROR, positioningStrategy)
|
return DiagnosticFactory0DelegateProvider(Severity.ERROR, positioningStrategy)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any> error1(
|
fun <P : PsiElement, A> error1(
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
||||||
): DiagnosticFactory1DelegateProvider<P, A> {
|
): DiagnosticFactory1DelegateProvider<P, A> {
|
||||||
return DiagnosticFactory1DelegateProvider(Severity.ERROR, positioningStrategy)
|
return DiagnosticFactory1DelegateProvider(Severity.ERROR, positioningStrategy)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any, B : Any> error2(
|
fun <P : PsiElement, A, B> error2(
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
||||||
): DiagnosticFactory2DelegateProvider<P, A, B> {
|
): DiagnosticFactory2DelegateProvider<P, A, B> {
|
||||||
return DiagnosticFactory2DelegateProvider(Severity.ERROR, positioningStrategy)
|
return DiagnosticFactory2DelegateProvider(Severity.ERROR, positioningStrategy)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any, B : Any, C : Any> error3(
|
fun <P : PsiElement, A, B, C> error3(
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
||||||
): DiagnosticFactory3DelegateProvider<P, A, B, C> {
|
): DiagnosticFactory3DelegateProvider<P, A, B, C> {
|
||||||
return DiagnosticFactory3DelegateProvider(Severity.ERROR, positioningStrategy)
|
return DiagnosticFactory3DelegateProvider(Severity.ERROR, positioningStrategy)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <P : PsiElement, A : Any, B : Any, C : Any, D : Any> error4(
|
fun <P : PsiElement, A, B, C, D> error4(
|
||||||
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
positioningStrategy: SourceElementPositioningStrategy<P> = SourceElementPositioningStrategy.DEFAULT
|
||||||
): DiagnosticFactory4DelegateProvider<P, A, B, C, D> {
|
): DiagnosticFactory4DelegateProvider<P, A, B, C, D> {
|
||||||
return DiagnosticFactory4DelegateProvider(Severity.ERROR, positioningStrategy)
|
return DiagnosticFactory4DelegateProvider(Severity.ERROR, positioningStrategy)
|
||||||
@@ -75,7 +75,7 @@ class DiagnosticFactory0DelegateProvider<P : PsiElement>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DiagnosticFactory1DelegateProvider<P : PsiElement, A : Any>(
|
class DiagnosticFactory1DelegateProvider<P : PsiElement, A>(
|
||||||
private val severity: Severity,
|
private val severity: Severity,
|
||||||
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
||||||
) {
|
) {
|
||||||
@@ -84,7 +84,7 @@ class DiagnosticFactory1DelegateProvider<P : PsiElement, A : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DiagnosticFactory2DelegateProvider<P : PsiElement, A : Any, B : Any>(
|
class DiagnosticFactory2DelegateProvider<P : PsiElement, A, B>(
|
||||||
private val severity: Severity,
|
private val severity: Severity,
|
||||||
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
||||||
) {
|
) {
|
||||||
@@ -93,7 +93,7 @@ class DiagnosticFactory2DelegateProvider<P : PsiElement, A : Any, B : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DiagnosticFactory3DelegateProvider<P : PsiElement, A : Any, B : Any, C : Any>(
|
class DiagnosticFactory3DelegateProvider<P : PsiElement, A, B, C>(
|
||||||
private val severity: Severity,
|
private val severity: Severity,
|
||||||
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
||||||
) {
|
) {
|
||||||
@@ -102,7 +102,7 @@ class DiagnosticFactory3DelegateProvider<P : PsiElement, A : Any, B : Any, C : A
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DiagnosticFactory4DelegateProvider<P : PsiElement, A : Any, B : Any, C : Any, D : Any>(
|
class DiagnosticFactory4DelegateProvider<P : PsiElement, A, B, C, D>(
|
||||||
private val severity: Severity,
|
private val severity: Severity,
|
||||||
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
private val positioningStrategy: SourceElementPositioningStrategy<P>
|
||||||
) {
|
) {
|
||||||
|
|||||||
+4
-4
@@ -18,7 +18,7 @@ class FirDiagnosticFactoryToRendererMap(val name: String) {
|
|||||||
put(factory, SimpleFirDiagnosticRenderer(message))
|
put(factory, SimpleFirDiagnosticRenderer(message))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any> put(
|
fun <A> put(
|
||||||
factory: FirDiagnosticFactory1<*, A>,
|
factory: FirDiagnosticFactory1<*, A>,
|
||||||
message: String,
|
message: String,
|
||||||
rendererA: DiagnosticParameterRenderer<A>?
|
rendererA: DiagnosticParameterRenderer<A>?
|
||||||
@@ -26,7 +26,7 @@ class FirDiagnosticFactoryToRendererMap(val name: String) {
|
|||||||
put(factory, FirDiagnosticWithParameters1Renderer(message, rendererA))
|
put(factory, FirDiagnosticWithParameters1Renderer(message, rendererA))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any, B : Any> put(
|
fun <A, B> put(
|
||||||
factory: FirDiagnosticFactory2<*, A, B>,
|
factory: FirDiagnosticFactory2<*, A, B>,
|
||||||
message: String,
|
message: String,
|
||||||
rendererA: DiagnosticParameterRenderer<A>?,
|
rendererA: DiagnosticParameterRenderer<A>?,
|
||||||
@@ -35,7 +35,7 @@ class FirDiagnosticFactoryToRendererMap(val name: String) {
|
|||||||
put(factory, FirDiagnosticWithParameters2Renderer(message, rendererA, rendererB))
|
put(factory, FirDiagnosticWithParameters2Renderer(message, rendererA, rendererB))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any, B : Any, C : Any> put(
|
fun <A, B, C> put(
|
||||||
factory: FirDiagnosticFactory3<*, A, B, C>,
|
factory: FirDiagnosticFactory3<*, A, B, C>,
|
||||||
message: String,
|
message: String,
|
||||||
rendererA: DiagnosticParameterRenderer<A>?,
|
rendererA: DiagnosticParameterRenderer<A>?,
|
||||||
@@ -45,7 +45,7 @@ class FirDiagnosticFactoryToRendererMap(val name: String) {
|
|||||||
put(factory, FirDiagnosticWithParameters3Renderer(message, rendererA, rendererB, rendererC))
|
put(factory, FirDiagnosticWithParameters3Renderer(message, rendererA, rendererB, rendererC))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any, B : Any, C : Any, D : Any> put(
|
fun <A, B, C, D> put(
|
||||||
factory: FirDiagnosticFactory4<*, A, B, C, D>,
|
factory: FirDiagnosticFactory4<*, A, B, C, D>,
|
||||||
message: String,
|
message: String,
|
||||||
rendererA: DiagnosticParameterRenderer<A>?,
|
rendererA: DiagnosticParameterRenderer<A>?,
|
||||||
|
|||||||
+8
-8
@@ -21,22 +21,22 @@ sealed class AbstractFirDiagnosticWithParametersRenderer<D : FirDiagnostic<*>>(
|
|||||||
protected val message: String
|
protected val message: String
|
||||||
) : FirDiagnosticRenderer<D>, AbstractDiagnosticWithParametersRenderer<D>(message)
|
) : FirDiagnosticRenderer<D>, AbstractDiagnosticWithParametersRenderer<D>(message)
|
||||||
|
|
||||||
class FirDiagnosticWithParameters1Renderer<A : Any>(
|
class FirDiagnosticWithParameters1Renderer<A>(
|
||||||
message: String,
|
message: String,
|
||||||
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters1<*, A>>(message) {
|
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters1<*, A>>(message) {
|
||||||
override fun renderParameters(diagnostic: FirDiagnosticWithParameters1<*, A>): Array<out Any> {
|
override fun renderParameters(diagnostic: FirDiagnosticWithParameters1<*, A>): Array<out Any?> {
|
||||||
val context = RenderingContext.of(diagnostic.a)
|
val context = RenderingContext.of(diagnostic.a)
|
||||||
return arrayOf(renderParameter(diagnostic.a, rendererForA, context))
|
return arrayOf(renderParameter(diagnostic.a, rendererForA, context))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirDiagnosticWithParameters2Renderer<A : Any, B : Any>(
|
class FirDiagnosticWithParameters2Renderer<A, B>(
|
||||||
message: String,
|
message: String,
|
||||||
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
||||||
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters2<*, A, B>>(message) {
|
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters2<*, A, B>>(message) {
|
||||||
override fun renderParameters(diagnostic: FirDiagnosticWithParameters2<*, A, B>): Array<out Any> {
|
override fun renderParameters(diagnostic: FirDiagnosticWithParameters2<*, A, B>): Array<out Any?> {
|
||||||
val context = RenderingContext.of(diagnostic.a, diagnostic.b)
|
val context = RenderingContext.of(diagnostic.a, diagnostic.b)
|
||||||
return arrayOf(
|
return arrayOf(
|
||||||
renderParameter(diagnostic.a, rendererForA, context),
|
renderParameter(diagnostic.a, rendererForA, context),
|
||||||
@@ -45,13 +45,13 @@ class FirDiagnosticWithParameters2Renderer<A : Any, B : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirDiagnosticWithParameters3Renderer<A : Any, B : Any, C : Any>(
|
class FirDiagnosticWithParameters3Renderer<A, B, C>(
|
||||||
message: String,
|
message: String,
|
||||||
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
||||||
private val rendererForC: DiagnosticParameterRenderer<C>?,
|
private val rendererForC: DiagnosticParameterRenderer<C>?,
|
||||||
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters3<*, A, B, C>>(message) {
|
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters3<*, A, B, C>>(message) {
|
||||||
override fun renderParameters(diagnostic: FirDiagnosticWithParameters3<*, A, B, C>): Array<out Any> {
|
override fun renderParameters(diagnostic: FirDiagnosticWithParameters3<*, A, B, C>): Array<out Any?> {
|
||||||
val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c)
|
val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c)
|
||||||
return arrayOf(
|
return arrayOf(
|
||||||
renderParameter(diagnostic.a, rendererForA, context),
|
renderParameter(diagnostic.a, rendererForA, context),
|
||||||
@@ -61,14 +61,14 @@ class FirDiagnosticWithParameters3Renderer<A : Any, B : Any, C : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirDiagnosticWithParameters4Renderer<A : Any, B : Any, C : Any, D : Any>(
|
class FirDiagnosticWithParameters4Renderer<A, B, C, D>(
|
||||||
message: String,
|
message: String,
|
||||||
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
||||||
private val rendererForC: DiagnosticParameterRenderer<C>?,
|
private val rendererForC: DiagnosticParameterRenderer<C>?,
|
||||||
private val rendererForD: DiagnosticParameterRenderer<D>?,
|
private val rendererForD: DiagnosticParameterRenderer<D>?,
|
||||||
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters4<*, A, B, C, D>>(message) {
|
) : AbstractFirDiagnosticWithParametersRenderer<FirDiagnosticWithParameters4<*, A, B, C, D>>(message) {
|
||||||
override fun renderParameters(diagnostic: FirDiagnosticWithParameters4<*, A, B, C, D>): Array<out Any> {
|
override fun renderParameters(diagnostic: FirDiagnosticWithParameters4<*, A, B, C, D>): Array<out Any?> {
|
||||||
val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c)
|
val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c)
|
||||||
return arrayOf(
|
return arrayOf(
|
||||||
renderParameter(diagnostic.a, rendererForA, context),
|
renderParameter(diagnostic.a, rendererForA, context),
|
||||||
|
|||||||
+2
-2
@@ -38,7 +38,7 @@ object FirDiagnosticRenderers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val TO_STRING = Renderer { element: Any ->
|
val TO_STRING = Renderer { element: Any? ->
|
||||||
element.toString()
|
element.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ object FirDiagnosticRenderers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val NOT_RENDERED = Renderer<Any> {
|
val NOT_RENDERED = Renderer<Any?> {
|
||||||
""
|
""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptorWithTypeParameters
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptorWithTypeParameters
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
|
|
||||||
fun <P : Any> renderParameter(parameter: P, renderer: DiagnosticParameterRenderer<P>?, context: RenderingContext): Any =
|
fun <P> renderParameter(parameter: P, renderer: DiagnosticParameterRenderer<P>?, context: RenderingContext): Any? =
|
||||||
renderer?.render(parameter, context) ?: parameter
|
renderer?.render(parameter, context) ?: parameter
|
||||||
|
|
||||||
fun ClassifierDescriptorWithTypeParameters.renderKindWithName(): String =
|
fun ClassifierDescriptorWithTypeParameters.renderKindWithName(): String =
|
||||||
|
|||||||
+7
-7
@@ -27,29 +27,29 @@ abstract class AbstractDiagnosticWithParametersRenderer<in D : UnboundDiagnostic
|
|||||||
return messageFormat.format(renderParameters(diagnostic))
|
return messageFormat.format(renderParameters(diagnostic))
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract fun renderParameters(diagnostic: D): Array<out Any>
|
abstract fun renderParameters(diagnostic: D): Array<out Any?>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class DiagnosticWithParameters1Renderer<A : Any>(
|
class DiagnosticWithParameters1Renderer<A>(
|
||||||
message: String,
|
message: String,
|
||||||
private val rendererForA: DiagnosticParameterRenderer<A>?
|
private val rendererForA: DiagnosticParameterRenderer<A>?
|
||||||
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters1<*, A>>(message) {
|
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters1<*, A>>(message) {
|
||||||
|
|
||||||
override fun renderParameters(diagnostic: DiagnosticWithParameters1<*, A>): Array<out Any> {
|
override fun renderParameters(diagnostic: DiagnosticWithParameters1<*, A>): Array<out Any?> {
|
||||||
val context = RenderingContext.of(diagnostic.a)
|
val context = RenderingContext.of(diagnostic.a)
|
||||||
return arrayOf(renderParameter(diagnostic.a, rendererForA, context))
|
return arrayOf(renderParameter(diagnostic.a, rendererForA, context))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DiagnosticWithParameters2Renderer<A : Any, B : Any>(
|
class DiagnosticWithParameters2Renderer<A, B>(
|
||||||
message: String,
|
message: String,
|
||||||
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
private val rendererForB: DiagnosticParameterRenderer<B>?
|
private val rendererForB: DiagnosticParameterRenderer<B>?
|
||||||
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters2<*, A, B>>(message) {
|
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters2<*, A, B>>(message) {
|
||||||
|
|
||||||
override fun renderParameters(diagnostic: DiagnosticWithParameters2<*, A, B>): Array<out Any> {
|
override fun renderParameters(diagnostic: DiagnosticWithParameters2<*, A, B>): Array<out Any?> {
|
||||||
val context = RenderingContext.of(diagnostic.a, diagnostic.b)
|
val context = RenderingContext.of(diagnostic.a, diagnostic.b)
|
||||||
return arrayOf(
|
return arrayOf(
|
||||||
renderParameter(diagnostic.a, rendererForA, context),
|
renderParameter(diagnostic.a, rendererForA, context),
|
||||||
@@ -58,14 +58,14 @@ class DiagnosticWithParameters2Renderer<A : Any, B : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DiagnosticWithParameters3Renderer<A : Any, B : Any, C : Any>(
|
class DiagnosticWithParameters3Renderer<A, B, C>(
|
||||||
message: String,
|
message: String,
|
||||||
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
||||||
private val rendererForC: DiagnosticParameterRenderer<C>?
|
private val rendererForC: DiagnosticParameterRenderer<C>?
|
||||||
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters3<*, A, B, C>>(message) {
|
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters3<*, A, B, C>>(message) {
|
||||||
|
|
||||||
override fun renderParameters(diagnostic: DiagnosticWithParameters3<*, A, B, C>): Array<out Any> {
|
override fun renderParameters(diagnostic: DiagnosticWithParameters3<*, A, B, C>): Array<out Any?> {
|
||||||
val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c)
|
val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c)
|
||||||
return arrayOf(
|
return arrayOf(
|
||||||
renderParameter(diagnostic.a, rendererForA, context),
|
renderParameter(diagnostic.a, rendererForA, context),
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ open class DiagnosticCodeMetaInfoRenderConfiguration(
|
|||||||
else -> DefaultErrorMessages.getRendererForDiagnostic(codeMetaInfo.diagnostic)
|
else -> DefaultErrorMessages.getRendererForDiagnostic(codeMetaInfo.diagnostic)
|
||||||
}
|
}
|
||||||
if (renderer is AbstractDiagnosticWithParametersRenderer) {
|
if (renderer is AbstractDiagnosticWithParametersRenderer) {
|
||||||
renderer.renderParameters(codeMetaInfo.diagnostic).mapTo(params, Any::toString)
|
renderer.renderParameters(codeMetaInfo.diagnostic).mapTo(params, Any?::toString)
|
||||||
}
|
}
|
||||||
if (renderSeverity)
|
if (renderSeverity)
|
||||||
params.add("severity='${codeMetaInfo.diagnostic.severity}'")
|
params.add("severity='${codeMetaInfo.diagnostic.severity}'")
|
||||||
|
|||||||
+4
-4
@@ -41,28 +41,28 @@ private fun FirLightDiagnostic.toPsiDiagnostic(): FirPsiDiagnostic<*> {
|
|||||||
psiSourceElement,
|
psiSourceElement,
|
||||||
a,
|
a,
|
||||||
severity,
|
severity,
|
||||||
factory as FirDiagnosticFactory1<PsiElement, Any>
|
factory as FirDiagnosticFactory1<PsiElement, Any?>
|
||||||
)
|
)
|
||||||
|
|
||||||
is FirLightDiagnosticWithParameters2<*, *> -> FirPsiDiagnosticWithParameters2(
|
is FirLightDiagnosticWithParameters2<*, *> -> FirPsiDiagnosticWithParameters2(
|
||||||
psiSourceElement,
|
psiSourceElement,
|
||||||
a, b,
|
a, b,
|
||||||
severity,
|
severity,
|
||||||
factory as FirDiagnosticFactory2<PsiElement, Any, Any>
|
factory as FirDiagnosticFactory2<PsiElement, Any?, Any?>
|
||||||
)
|
)
|
||||||
|
|
||||||
is FirLightDiagnosticWithParameters3<*, *, *> -> FirPsiDiagnosticWithParameters3(
|
is FirLightDiagnosticWithParameters3<*, *, *> -> FirPsiDiagnosticWithParameters3(
|
||||||
psiSourceElement,
|
psiSourceElement,
|
||||||
a, b, c,
|
a, b, c,
|
||||||
severity,
|
severity,
|
||||||
factory as FirDiagnosticFactory3<PsiElement, Any, Any, Any>
|
factory as FirDiagnosticFactory3<PsiElement, Any?, Any?, Any?>
|
||||||
)
|
)
|
||||||
|
|
||||||
is FirLightDiagnosticWithParameters4<*, *, *, *> -> FirPsiDiagnosticWithParameters4(
|
is FirLightDiagnosticWithParameters4<*, *, *, *> -> FirPsiDiagnosticWithParameters4(
|
||||||
psiSourceElement,
|
psiSourceElement,
|
||||||
a, b, c, d,
|
a, b, c, d,
|
||||||
severity,
|
severity,
|
||||||
factory as FirDiagnosticFactory4<PsiElement, Any, Any, Any, Any>
|
factory as FirDiagnosticFactory4<PsiElement, Any?, Any?, Any?, Any?>
|
||||||
)
|
)
|
||||||
else -> error("Unknown diagnostic type ${this::class.simpleName}")
|
else -> error("Unknown diagnostic type ${this::class.simpleName}")
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-3
@@ -73,16 +73,21 @@ object HLDiagnosticConverter {
|
|||||||
|
|
||||||
private object FirToKtConversionCreator {
|
private object FirToKtConversionCreator {
|
||||||
fun createConversion(type: KType): HLParameterConversion {
|
fun createConversion(type: KType): HLParameterConversion {
|
||||||
|
val nullable = type.isMarkedNullable
|
||||||
val kClass = type.classifier as KClass<*>
|
val kClass = type.classifier as KClass<*>
|
||||||
return tryMapAllowedType(kClass)
|
return tryMapAllowedType(kClass)
|
||||||
?: tryMapPsiElementType(type, kClass)
|
?: tryMapPsiElementType(type, kClass)
|
||||||
?: tryMapFirTypeToKtType(kClass)
|
?: tryMapFirTypeToKtType(kClass, nullable)
|
||||||
?: tryMapPlatformType(type, kClass)
|
?: tryMapPlatformType(type, kClass)
|
||||||
?: error("Unsupported type $type, consider add corresponding mapping")
|
?: error("Unsupported type $type, consider add corresponding mapping")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun tryMapFirTypeToKtType(kClass: KClass<*>): HLParameterConversion? {
|
private fun tryMapFirTypeToKtType(kClass: KClass<*>, nullable: Boolean): HLParameterConversion? {
|
||||||
return typeMapping[kClass]
|
return if (nullable) {
|
||||||
|
nullableTypeMapping[kClass] ?: typeMapping[kClass]
|
||||||
|
} else {
|
||||||
|
typeMapping[kClass]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun tryMapAllowedType(kClass: KClass<*>): HLParameterConversion? {
|
private fun tryMapAllowedType(kClass: KClass<*>): HLParameterConversion? {
|
||||||
@@ -116,6 +121,17 @@ private object FirToKtConversionCreator {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val nullableTypeMapping: Map<KClass<*>, HLFunctionCallConversion> = mapOf(
|
||||||
|
FirExpression::class to HLFunctionCallConversion(
|
||||||
|
"{0}?.source?.psi as? KtExpression",
|
||||||
|
KtExpression::class.createType(nullable = true),
|
||||||
|
importsToAdd = listOf(
|
||||||
|
"org.jetbrains.kotlin.psi.KtExpression",
|
||||||
|
"org.jetbrains.kotlin.fir.psi"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
private val typeMapping: Map<KClass<*>, HLFunctionCallConversion> = mapOf(
|
private val typeMapping: Map<KClass<*>, HLFunctionCallConversion> = mapOf(
|
||||||
AbstractFirBasedSymbol::class to HLFunctionCallConversion(
|
AbstractFirBasedSymbol::class to HLFunctionCallConversion(
|
||||||
"firSymbolBuilder.buildSymbol({0}.fir as FirDeclaration)",
|
"firSymbolBuilder.buildSymbol({0}.fir as FirDeclaration)",
|
||||||
|
|||||||
+3
-2
@@ -11,13 +11,14 @@ import kotlin.reflect.KType
|
|||||||
|
|
||||||
internal fun SmartPrinter.printTypeWithShortNames(type: KType) {
|
internal fun SmartPrinter.printTypeWithShortNames(type: KType) {
|
||||||
fun typeConversion(type: KType): String {
|
fun typeConversion(type: KType): String {
|
||||||
|
val nullableSuffix = if (type.isMarkedNullable) "?" else ""
|
||||||
val simpleName = (type.classifier as KClass<*>).simpleName!!
|
val simpleName = (type.classifier as KClass<*>).simpleName!!
|
||||||
return if (type.arguments.isEmpty()) simpleName
|
return if (type.arguments.isEmpty()) simpleName + nullableSuffix
|
||||||
else simpleName + type.arguments.joinToString(separator = ", ", prefix = "<", postfix = ">") {
|
else simpleName + type.arguments.joinToString(separator = ", ", prefix = "<", postfix = ">") {
|
||||||
when (val typeArgument = it.type) {
|
when (val typeArgument = it.type) {
|
||||||
null -> "*"
|
null -> "*"
|
||||||
else -> typeConversion(typeArgument)
|
else -> typeConversion(typeArgument)
|
||||||
}
|
} + nullableSuffix
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print(typeConversion(type))
|
print(typeConversion(type))
|
||||||
|
|||||||
+16
-16
@@ -15,19 +15,19 @@ internal fun interface KtFirDiagnostic0Creator : KtFirDiagnosticCreator {
|
|||||||
fun KtFirAnalysisSession.create(diagnostic: FirSimpleDiagnostic<*>): KtFirDiagnostic<*>
|
fun KtFirAnalysisSession.create(diagnostic: FirSimpleDiagnostic<*>): KtFirDiagnostic<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun interface KtFirDiagnostic1Creator<A : Any> : KtFirDiagnosticCreator {
|
internal fun interface KtFirDiagnostic1Creator<A> : KtFirDiagnosticCreator {
|
||||||
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters1<*, A>): KtFirDiagnostic<*>
|
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters1<*, A>): KtFirDiagnostic<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun interface KtFirDiagnostic2Creator<A : Any, B : Any> : KtFirDiagnosticCreator {
|
internal fun interface KtFirDiagnostic2Creator<A, B> : KtFirDiagnosticCreator {
|
||||||
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters2<*, A, B>): KtFirDiagnostic<*>
|
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters2<*, A, B>): KtFirDiagnostic<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun interface KtFirDiagnostic3Creator<A : Any, B : Any, C : Any> : KtFirDiagnosticCreator {
|
internal fun interface KtFirDiagnostic3Creator<A, B, C> : KtFirDiagnosticCreator {
|
||||||
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters3<*, A, B, C>): KtFirDiagnostic<*>
|
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters3<*, A, B, C>): KtFirDiagnostic<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun interface KtFirDiagnostic4Creator<A : Any, B : Any, C : Any, D : Any> : KtFirDiagnosticCreator {
|
internal fun interface KtFirDiagnostic4Creator<A, B, C, D> : KtFirDiagnosticCreator {
|
||||||
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters4<*, A, B, C, D>): KtFirDiagnostic<*>
|
fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters4<*, A, B, C, D>): KtFirDiagnostic<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,17 +42,17 @@ internal class KtDiagnosticConverter(private val conversions: Map<AbstractFirDia
|
|||||||
is KtFirDiagnostic0Creator -> with(creator) {
|
is KtFirDiagnostic0Creator -> with(creator) {
|
||||||
create(diagnostic as FirSimpleDiagnostic<*>)
|
create(diagnostic as FirSimpleDiagnostic<*>)
|
||||||
}
|
}
|
||||||
is KtFirDiagnostic1Creator<*> -> with(creator as KtFirDiagnostic1Creator<Any>) {
|
is KtFirDiagnostic1Creator<*> -> with(creator as KtFirDiagnostic1Creator<Any?>) {
|
||||||
create(diagnostic as FirDiagnosticWithParameters1<FirSourceElement, Any>)
|
create(diagnostic as FirDiagnosticWithParameters1<FirSourceElement, Any?>)
|
||||||
}
|
}
|
||||||
is KtFirDiagnostic2Creator<*, *> -> with(creator as KtFirDiagnostic2Creator<Any, Any>) {
|
is KtFirDiagnostic2Creator<*, *> -> with(creator as KtFirDiagnostic2Creator<Any?, Any?>) {
|
||||||
create(diagnostic as FirDiagnosticWithParameters2<FirSourceElement, Any, Any>)
|
create(diagnostic as FirDiagnosticWithParameters2<FirSourceElement, Any?, Any?>)
|
||||||
}
|
}
|
||||||
is KtFirDiagnostic3Creator<*, *, *> -> with(creator as KtFirDiagnostic3Creator<Any, Any, Any>) {
|
is KtFirDiagnostic3Creator<*, *, *> -> with(creator as KtFirDiagnostic3Creator<Any?, Any?, Any?>) {
|
||||||
create(diagnostic as FirDiagnosticWithParameters3<FirSourceElement, Any, Any, Any>)
|
create(diagnostic as FirDiagnosticWithParameters3<FirSourceElement, Any?, Any?, Any?>)
|
||||||
}
|
}
|
||||||
is KtFirDiagnostic4Creator<*, *, *, *> -> with(creator as KtFirDiagnostic4Creator<Any, Any, Any, Any>) {
|
is KtFirDiagnostic4Creator<*, *, *, *> -> with(creator as KtFirDiagnostic4Creator<Any?, Any?, Any?, Any?>) {
|
||||||
create(diagnostic as FirDiagnosticWithParameters4<FirSourceElement, Any, Any, Any, Any>)
|
create(diagnostic as FirDiagnosticWithParameters4<FirSourceElement, Any?, Any?, Any?, Any?>)
|
||||||
}
|
}
|
||||||
else -> error("Invalid KtFirDiagnosticCreator ${creator::class.simpleName}")
|
else -> error("Invalid KtFirDiagnosticCreator ${creator::class.simpleName}")
|
||||||
}
|
}
|
||||||
@@ -67,19 +67,19 @@ internal class KtDiagnosticConverterBuilder private constructor() {
|
|||||||
conversions[diagnostic] = creator
|
conversions[diagnostic] = creator
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any> add(diagnostic: FirDiagnosticFactory1<*, A>, creator: KtFirDiagnostic1Creator<A>) {
|
fun <A> add(diagnostic: FirDiagnosticFactory1<*, A>, creator: KtFirDiagnostic1Creator<A>) {
|
||||||
conversions[diagnostic] = creator
|
conversions[diagnostic] = creator
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any, B : Any> add(diagnostic: FirDiagnosticFactory2<*, A, B>, creator: KtFirDiagnostic2Creator<A, B>) {
|
fun <A, B> add(diagnostic: FirDiagnosticFactory2<*, A, B>, creator: KtFirDiagnostic2Creator<A, B>) {
|
||||||
conversions[diagnostic] = creator
|
conversions[diagnostic] = creator
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any, B : Any, C : Any> add(diagnostic: FirDiagnosticFactory3<*, A, B, C>, creator: KtFirDiagnostic3Creator<A, B, C>) {
|
fun <A, B, C> add(diagnostic: FirDiagnosticFactory3<*, A, B, C>, creator: KtFirDiagnostic3Creator<A, B, C>) {
|
||||||
conversions[diagnostic] = creator
|
conversions[diagnostic] = creator
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <A : Any, B : Any, C : Any, D : Any> add(diagnostic: FirDiagnosticFactory4<*, A, B, C, D>, creator: KtFirDiagnostic4Creator<A, B, C, D>) {
|
fun <A, B, C, D> add(diagnostic: FirDiagnosticFactory4<*, A, B, C, D>, creator: KtFirDiagnostic4Creator<A, B, C, D>) {
|
||||||
conversions[diagnostic] = creator
|
conversions[diagnostic] = creator
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user