mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-04-15 15:52:16 +00:00
FIR: introduce error message renderer
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
# Note that this file is also present in idea/src/META-INF/services
|
||||
org.jetbrains.kotlin.resolve.jvm.diagnostics.DefaultErrorMessagesJvm
|
||||
org.jetbrains.kotlin.js.resolve.diagnostics.DefaultErrorMessagesJs
|
||||
org.jetbrains.kotlin.fir.resolve.diagnostics.DefaultErrorMessagesFir
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2010-2019 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.resolve.diagnostics
|
||||
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.AMBIGUITY
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.ASSIGN_OPERATOR_AMBIGUITY
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.DESERIALIZATION_ERROR
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.ENUM_AS_SUPERTYPE
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.ERROR_FROM_JAVA_RESOLUTION
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.ILLEGAL_CONST_EXPRESSION
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.INAPPLICABLE_CANDIDATE
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.INFERENCE_ERROR
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.NO_SUPERTYPE
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.OTHER_ERROR
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.RECURSION_IN_IMPLICIT_TYPES
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.RECURSION_IN_SUPERTYPES
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.SYNTAX_ERROR
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.TYPE_PARAMETER_AS_SUPERTYPE
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.UNRESOLVED_LABEL
|
||||
import org.jetbrains.kotlin.diagnostics.FirErrors.UNRESOLVED_REFERENCE
|
||||
import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
|
||||
import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap
|
||||
import org.jetbrains.kotlin.diagnostics.rendering.Renderer
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
|
||||
class DefaultErrorMessagesFir : DefaultErrorMessages.Extension {
|
||||
|
||||
override fun getMap(): DiagnosticFactoryToRendererMap {
|
||||
return MAP
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val SYMBOL_COLLECTION_RENDERER = Renderer { symbols: Collection<AbstractFirBasedSymbol<*>> ->
|
||||
symbols.joinToString(prefix = "[", postfix = "]", separator = ",", limit = 3, truncated = "...") { symbol ->
|
||||
when (symbol) {
|
||||
is FirClassLikeSymbol<*> -> symbol.classId.asString()
|
||||
is FirCallableSymbol<*> -> symbol.callableId.toString()
|
||||
else -> "???"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val MAP = DiagnosticFactoryToRendererMap("FIR").also { map ->
|
||||
map.put(UNRESOLVED_REFERENCE, "Unresolved reference: {0}", Renderer { it })
|
||||
map.put(INAPPLICABLE_CANDIDATE, "Inapplicable candidate(s): {0}", SYMBOL_COLLECTION_RENDERER)
|
||||
map.put(AMBIGUITY, "Ambiguity between candidates: {0}", SYMBOL_COLLECTION_RENDERER)
|
||||
map.put(ASSIGN_OPERATOR_AMBIGUITY, "Ambiguity between assign operator candidates: {0}", SYMBOL_COLLECTION_RENDERER)
|
||||
map.put(SYNTAX_ERROR, "Syntax error")
|
||||
map.put(UNRESOLVED_LABEL, "Unresolved label")
|
||||
map.put(ILLEGAL_CONST_EXPRESSION, "Illegal const expression")
|
||||
map.put(DESERIALIZATION_ERROR, "Deserialization error")
|
||||
map.put(INFERENCE_ERROR, "Inference error")
|
||||
map.put(NO_SUPERTYPE, "No supertype")
|
||||
map.put(TYPE_PARAMETER_AS_SUPERTYPE, "Type parameter as supertype")
|
||||
map.put(ENUM_AS_SUPERTYPE, "Enum as supertype")
|
||||
map.put(RECURSION_IN_SUPERTYPES, "Recursion in supertypes")
|
||||
map.put(RECURSION_IN_IMPLICIT_TYPES, "Recursion in implicit types")
|
||||
map.put(ERROR_FROM_JAVA_RESOLUTION, "Java resolution error")
|
||||
map.put(OTHER_ERROR, "Unknown (other) error")
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
# Note that this file is also present in compiler/cli/src/META-INF/services
|
||||
org.jetbrains.kotlin.resolve.jvm.diagnostics.DefaultErrorMessagesJvm
|
||||
org.jetbrains.kotlin.js.resolve.diagnostics.DefaultErrorMessagesJs
|
||||
org.jetbrains.kotlin.fir.resolve.diagnostics.DefaultErrorMessagesFir
|
||||
@@ -1,5 +1,3 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class A
|
||||
|
||||
fun f() {
|
||||
|
||||
Reference in New Issue
Block a user