[FIR] Trim rendered symbols in diagnostic messages

This commit is contained in:
Kirill Rakhman
2023-04-03 18:36:01 +02:00
committed by Space Team
parent 456d3e0f42
commit 674397be82
5 changed files with 9 additions and 13 deletions
@@ -48,8 +48,7 @@ KtApplicableCallCandidateInfo:
isInBestCandidates = true isInBestCandidates = true
KtInapplicableCallCandidateInfo: KtInapplicableCallCandidateInfo:
diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final inline fun <T, K> R|kotlin/collections/Iterable<T>|.kotlin/collections/groupBy(keySelector: R|(T) -> K|): R|kotlin/collections/Map<K, kotlin/collections/List<T>>| diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final inline fun <T, K> R|kotlin/collections/Iterable<T>|.kotlin/collections/groupBy(keySelector: R|(T) -> K|): R|kotlin/collections/Map<K, kotlin/collections/List<T>>|>
>
candidate = KtSimpleFunctionCall: candidate = KtSimpleFunctionCall:
isImplicitInvoke = false isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol: partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
@@ -37,7 +37,7 @@ object FirDiagnosticRenderers {
callArgumentsRenderer = FirCallNoArgumentsRenderer(), callArgumentsRenderer = FirCallNoArgumentsRenderer(),
modifierRenderer = FirPartialModifierRenderer(), modifierRenderer = FirPartialModifierRenderer(),
valueParameterRenderer = FirValueParameterRendererNoDefaultValue(), valueParameterRenderer = FirValueParameterRendererNoDefaultValue(),
).renderElementAsString(symbol.fir) ).renderElementAsString(symbol.fir, trim = true)
is FirTypeParameterSymbol -> symbol.name.asString() is FirTypeParameterSymbol -> symbol.name.asString()
else -> "???" else -> "???"
} }
@@ -109,7 +109,7 @@ object FirDiagnosticRenderers {
@OptIn(SymbolInternals::class) @OptIn(SymbolInternals::class)
FirRenderer( FirRenderer(
annotationRenderer = null, bodyRenderer = null, idRenderer = ConeIdFullRenderer() annotationRenderer = null, bodyRenderer = null, idRenderer = ConeIdFullRenderer()
).renderElementAsString(symbol.fir) ).renderElementAsString(symbol.fir, trim = true)
} }
val AMBIGUOUS_CALLS = Renderer { candidates: Collection<FirBasedSymbol<*>> -> val AMBIGUOUS_CALLS = Renderer { candidates: Collection<FirBasedSymbol<*>> ->
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.util.OperatorNameConventions
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
import java.util.* import java.util.*
class FirRenderer( class FirRenderer(
@@ -88,9 +89,9 @@ class FirRenderer(
fileAnnotationsContainerRenderer?.components = this fileAnnotationsContainerRenderer?.components = this
} }
fun renderElementAsString(element: FirElement): String { fun renderElementAsString(element: FirElement, trim: Boolean = false): String {
element.accept(visitor) element.accept(visitor)
return printer.toString() return printer.toString().applyIf(trim, String::trim)
} }
fun renderElementWithTypeAsString(element: FirElement): String { fun renderElementWithTypeAsString(element: FirElement): String {
+3 -6
View File
@@ -1,14 +1,11 @@
warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features
compiler/testData/cli/jvm/firDeprecationJava.kt:3:12: warning: '@Deprecated(...) fun stop(): Unit compiler/testData/cli/jvm/firDeprecationJava.kt:3:12: warning: '@Deprecated(...) fun stop(): Unit' is deprecated. Deprecated in Java
' is deprecated. Deprecated in Java
thread.stop() thread.stop()
^ ^
compiler/testData/cli/jvm/firDeprecationJava.kt:4:17: warning: '@Deprecated(...) fun bar(a: String!, b: Int, c: Double): String! compiler/testData/cli/jvm/firDeprecationJava.kt:4:17: warning: '@Deprecated(...) fun bar(a: String!, b: Int, c: Double): String!' is deprecated. Deprecated in Java
' is deprecated. Deprecated in Java
JavaClass().bar("", 1, 2.0) JavaClass().bar("", 1, 2.0)
^ ^
compiler/testData/cli/jvm/firDeprecationJava.kt:5:27: warning: '@Deprecated(...) field baz: List! compiler/testData/cli/jvm/firDeprecationJava.kt:5:27: warning: '@Deprecated(...) field baz: List!' is deprecated. Deprecated in Java
' is deprecated. Deprecated in Java
val baz = JavaClass().baz val baz = JavaClass().baz
^ ^
OK OK
@@ -13,7 +13,6 @@ compiler/testData/cli/jvm/firMultiplatformCompilationWithError/jvm.kt:1:18: erro
expect fun foo(): Unit expect fun foo(): Unit
actual interface A actual interface A
^ ^
COMPILATION_ERROR COMPILATION_ERROR