FIR IDE: implement generators for IDE diagnostics
This commit is contained in:
+2
-1
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.frontend.api.calls.KtCall
|
||||
import org.jetbrains.kotlin.idea.frontend.api.components.*
|
||||
import org.jetbrains.kotlin.idea.frontend.api.diagnostics.KtDiagnostic
|
||||
import org.jetbrains.kotlin.idea.frontend.api.diagnostics.KtDiagnosticWithPsi
|
||||
import org.jetbrains.kotlin.idea.frontend.api.scopes.*
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithDeclarations
|
||||
@@ -84,7 +85,7 @@ abstract class KtAnalysisSession(final override val token: ValidityToken) : Vali
|
||||
|
||||
fun KtElement.getDiagnostics(): Collection<KtDiagnostic> = diagnosticProvider.getDiagnosticsForElement(this)
|
||||
|
||||
fun KtFile.collectDiagnosticsForFile(): Collection<KtDiagnostic> = diagnosticProvider.collectDiagnosticsForFile(this)
|
||||
fun KtFile.collectDiagnosticsForFile(): Collection<KtDiagnosticWithPsi> = diagnosticProvider.collectDiagnosticsForFile(this)
|
||||
|
||||
fun KtSymbolWithKind.getContainingSymbol(): KtSymbolWithKind? = containingDeclarationProvider.getContainingDeclaration(this)
|
||||
|
||||
|
||||
+3
-3
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.frontend.api.components
|
||||
|
||||
import org.jetbrains.kotlin.idea.frontend.api.diagnostics.KtDiagnostic
|
||||
import org.jetbrains.kotlin.idea.frontend.api.diagnostics.KtDiagnosticWithPsi
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
abstract class KtDiagnosticProvider : KtAnalysisSessionComponent() {
|
||||
abstract fun getDiagnosticsForElement(element: KtElement): Collection<KtDiagnostic>
|
||||
abstract fun collectDiagnosticsForFile(ktFile: KtFile): Collection<KtDiagnostic>
|
||||
abstract fun getDiagnosticsForElement(element: KtElement): Collection<KtDiagnosticWithPsi>
|
||||
abstract fun collectDiagnosticsForFile(ktFile: KtFile): Collection<KtDiagnosticWithPsi>
|
||||
}
|
||||
|
||||
+19
-11
@@ -6,20 +6,28 @@
|
||||
package org.jetbrains.kotlin.idea.frontend.api.diagnostics
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
interface KtDiagnostic {
|
||||
interface KtDiagnostic : ValidityTokenOwner {
|
||||
val factoryName: String?
|
||||
val message: String
|
||||
val textRanges: Collection<TextRange>
|
||||
val isValid: Boolean get() = true
|
||||
val defaultMessage: String
|
||||
}
|
||||
|
||||
fun KtDiagnostic.getMessageWithFactoryName(): String =
|
||||
if (factoryName == null) message
|
||||
else "[$factoryName] $message"
|
||||
interface KtDiagnosticWithPsi : KtDiagnostic {
|
||||
val psi: PsiElement
|
||||
val textRanges: Collection<TextRange>
|
||||
val diagnosticClass: KClass<out KtDiagnosticWithPsi>
|
||||
}
|
||||
|
||||
data class KtSimpleDiagnostic(
|
||||
class KtSimpleDiagnostic(
|
||||
override val factoryName: String?,
|
||||
override val message: String,
|
||||
override val textRanges: Collection<TextRange>,
|
||||
) : KtDiagnostic
|
||||
override val defaultMessage: String,
|
||||
override val token: ValidityToken,
|
||||
) : KtDiagnostic
|
||||
|
||||
fun KtDiagnostic.getDefaultMessageWithFactoryName(): String =
|
||||
if (factoryName == null) defaultMessage
|
||||
else "[$factoryName] $defaultMessage"
|
||||
Reference in New Issue
Block a user