All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/*
 * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.fir.analysis.diagnostics

import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.Severity
import org.jetbrains.kotlin.fir.FirLightSourceElement
import org.jetbrains.kotlin.fir.FirPsiSourceElement
import org.jetbrains.kotlin.fir.FirSourceElement

// ------------------------------ diagnostics ------------------------------

sealed class FirDiagnostic {
    abstract val element: E
    abstract val severity: Severity
    abstract val factory: AbstractFirDiagnosticFactory<*, *>
}

sealed class FirSimpleDiagnostic : FirDiagnostic() {
    abstract override val factory: FirDiagnosticFactory0<*, *>
}

sealed class FirDiagnosticWithParameters1 : FirDiagnostic() {
    abstract val a: A
    abstract override val factory: FirDiagnosticFactory1<*, *, A>
}

sealed class FirDiagnosticWithParameters2 : FirDiagnostic() {
    abstract val a: A
    abstract val b: B
    abstract override val factory: FirDiagnosticFactory2<*, *, A, B>
}

sealed class FirDiagnosticWithParameters3 : FirDiagnostic() {
    abstract val a: A
    abstract val b: B
    abstract val c: C
    abstract override val factory: FirDiagnosticFactory3<*, *, A, B, C>
}

// ------------------------------ psi diagnostics ------------------------------

interface FirPsiDiagnostic

{ fun asPsiBasedDiagnostic(): Diagnostic val element: FirPsiSourceElement

} data class FirPsiSimpleDiagnostic

( override val element: FirPsiSourceElement

, override val severity: Severity, override val factory: FirDiagnosticFactory0, P> ) : FirSimpleDiagnostic>(), FirPsiDiagnostic

{ override fun asPsiBasedDiagnostic(): Diagnostic { return factory.psiDiagnosticFactory.on(element.psi) } } data class FirPsiDiagnosticWithParameters1

( override val element: FirPsiSourceElement

, override val a: A, override val severity: Severity, override val factory: FirDiagnosticFactory1, P, A> ) : FirDiagnosticWithParameters1, A>(), FirPsiDiagnostic

{ override fun asPsiBasedDiagnostic(): Diagnostic { return factory.psiDiagnosticFactory.on(element.psi, a) } } data class FirPsiDiagnosticWithParameters2

( override val element: FirPsiSourceElement

, override val a: A, override val b: B, override val severity: Severity, override val factory: FirDiagnosticFactory2, P, A, B> ) : FirDiagnosticWithParameters2, A, B>(), FirPsiDiagnostic

{ override fun asPsiBasedDiagnostic(): Diagnostic { return factory.psiDiagnosticFactory.on(element.psi, a, b) } } data class FirPsiDiagnosticWithParameters3

( override val element: FirPsiSourceElement

, override val a: A, override val b: B, override val c: C, override val severity: Severity, override val factory: FirDiagnosticFactory3, P, A, B, C> ) : FirDiagnosticWithParameters3, A, B, C>(), FirPsiDiagnostic

{ override fun asPsiBasedDiagnostic(): Diagnostic { return factory.psiDiagnosticFactory.on(element.psi, a, b, c) } } // ------------------------------ light tree diagnostics ------------------------------ interface FirLightDiagnostic { val element: FirLightSourceElement } data class FirLightSimpleDiagnostic( override val element: FirLightSourceElement, override val severity: Severity, override val factory: FirDiagnosticFactory0<*, *> ) : FirSimpleDiagnostic(), FirLightDiagnostic data class FirLightDiagnosticWithParameters1( override val element: FirLightSourceElement, override val a: A, override val severity: Severity, override val factory: FirDiagnosticFactory1<*, *, A> ) : FirDiagnosticWithParameters1(), FirLightDiagnostic data class FirLightDiagnosticWithParameters2( override val element: FirLightSourceElement, override val a: A, override val b: B, override val severity: Severity, override val factory: FirDiagnosticFactory2<*, *, A, B> ) : FirDiagnosticWithParameters2(), FirLightDiagnostic data class FirLightDiagnosticWithParameters3( override val element: FirLightSourceElement, override val a: A, override val b: B, override val c: C, override val severity: Severity, override val factory: FirDiagnosticFactory3<*, *, A, B, C> ) : FirDiagnosticWithParameters3(), FirLightDiagnostic





© 2015 - 2024 Weber Informatics LLC | Privacy Policy