[FIR] Remove line breaks after context receivers in diagnostic messages

#KT-62944 Fixed
This commit is contained in:
Kirill Rakhman
2023-10-30 11:02:10 +01:00
committed by Space Team
parent e18a124cbb
commit 0682a1f76d
10 changed files with 60 additions and 4 deletions
@@ -12687,6 +12687,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextKeywordWithElvis.kt");
}
@Test
@TestMetadata("contextReceiverAmbiguity.kt")
public void testContextReceiverAmbiguity() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverAmbiguity.kt");
}
@Test
@TestMetadata("contextReceiverTypeParamsUsage.kt")
public void testContextReceiverTypeParamsUsage() throws Exception {
@@ -12687,6 +12687,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextKeywordWithElvis.kt");
}
@Test
@TestMetadata("contextReceiverAmbiguity.kt")
public void testContextReceiverAmbiguity() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverAmbiguity.kt");
}
@Test
@TestMetadata("contextReceiverTypeParamsUsage.kt")
public void testContextReceiverTypeParamsUsage() throws Exception {
@@ -12681,6 +12681,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextKeywordWithElvis.kt");
}
@Test
@TestMetadata("contextReceiverAmbiguity.kt")
public void testContextReceiverAmbiguity() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverAmbiguity.kt");
}
@Test
@TestMetadata("contextReceiverTypeParamsUsage.kt")
public void testContextReceiverTypeParamsUsage() throws Exception {
@@ -12687,6 +12687,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextKeywordWithElvis.kt");
}
@Test
@TestMetadata("contextReceiverAmbiguity.kt")
public void testContextReceiverAmbiguity() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverAmbiguity.kt");
}
@Test
@TestMetadata("contextReceiverTypeParamsUsage.kt")
public void testContextReceiverTypeParamsUsage() throws Exception {
@@ -45,7 +45,8 @@ object FirDiagnosticRenderers {
callArgumentsRenderer = FirCallNoArgumentsRenderer(),
modifierRenderer = FirPartialModifierRenderer(),
valueParameterRenderer = FirValueParameterRendererNoDefaultValue(),
declarationRenderer = FirDeclarationRenderer("local ")
declarationRenderer = FirDeclarationRenderer("local "),
lineBreakAfterContextReceivers = false,
).renderElementAsString(symbol.fir, trim = true)
is FirTypeParameterSymbol -> symbol.name.asString()
else -> "???"
@@ -18,8 +18,6 @@ import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.impl.*
import org.jetbrains.kotlin.fir.references.*
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.name.StandardClassIds
@@ -48,6 +46,7 @@ class FirRenderer(
override val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer? = null,
override val resolvedNamedReferenceRenderer: FirResolvedNamedReferenceRenderer = FirResolvedNamedReferenceRendererWithLabel(),
override val resolvedQualifierRenderer: FirResolvedQualifierRenderer = FirResolvedQualifierRendererWithLabel(),
private val lineBreakAfterContextReceivers: Boolean = true,
) : FirRendererComponents {
override val visitor = Visitor()
@@ -149,7 +148,12 @@ class FirRenderer(
print("context(")
renderSeparated(contextReceivers, visitor)
print(")")
printer.newLine()
if (lineBreakAfterContextReceivers) {
printer.newLine()
} else {
print(" ")
}
}
private fun List<FirTypeParameterRef>.renderTypeParameters() {
@@ -0,0 +1,5 @@
/contextReceiverAmbiguity.kt:13:9: error: overload resolution ambiguity:
context(String) public fun foo(x: Comparable<*>): Unit defined in root package in file contextReceiverAmbiguity.kt
context(String) public fun foo(x: Number): Unit defined in root package in file contextReceiverAmbiguity.kt
foo(1)
^
@@ -0,0 +1 @@
/contextReceiverAmbiguity.kt:(203,206): error: Overload resolution ambiguity between candidates: [context(String) fun foo(x: Comparable<*>): Unit, context(String) fun foo(x: Number): Unit]
@@ -0,0 +1,15 @@
// FIR_IDENTICAL
// !LANGUAGE: +ContextReceivers
// RENDER_DIAGNOSTICS_FULL_TEXT
context(String)
fun foo(x: Comparable<*>) {}
context(String)
fun foo(x: Number) {}
fun test() {
with("") {
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1)
}
}
@@ -12687,6 +12687,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextKeywordWithElvis.kt");
}
@Test
@TestMetadata("contextReceiverAmbiguity.kt")
public void testContextReceiverAmbiguity() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/contextReceiverAmbiguity.kt");
}
@Test
@TestMetadata("contextReceiverTypeParamsUsage.kt")
public void testContextReceiverTypeParamsUsage() throws Exception {