[FE] Fix: do not report ambiguous label if label map is empty

This commit is contained in:
Anastasia.Shadrina
2021-12-21 01:00:04 +07:00
committed by teamcity
parent 8905586cbb
commit ea33da3a8d
7 changed files with 37 additions and 1 deletions
@@ -10654,6 +10654,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/insideDeclaration.kt");
}
@Test
@TestMetadata("labelFromFunctionName.kt")
public void testLabelFromFunctionName() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/labelFromFunctionName.kt");
}
@Test
@TestMetadata("labelsFromClassNameForbidden.kt")
public void testLabelsFromClassNameForbidden() throws Exception {
@@ -10654,6 +10654,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/insideDeclaration.kt");
}
@Test
@TestMetadata("labelFromFunctionName.kt")
public void testLabelFromFunctionName() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/labelFromFunctionName.kt");
}
@Test
@TestMetadata("labelsFromClassNameForbidden.kt")
public void testLabelsFromClassNameForbidden() throws Exception {
@@ -10654,6 +10654,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/insideDeclaration.kt");
}
@Test
@TestMetadata("labelFromFunctionName.kt")
public void testLabelFromFunctionName() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/labelFromFunctionName.kt");
}
@Test
@TestMetadata("labelsFromClassNameForbidden.kt")
public void testLabelsFromClassNameForbidden() throws Exception {
@@ -190,7 +190,7 @@ object LabelResolver {
]
val thisReceivers = labelNameToReceiverMap?.get(labelName.identifier)
val thisReceiver = when {
thisReceivers == null -> declarationDescriptor.extensionReceiverParameter
thisReceivers.isNullOrEmpty() -> declarationDescriptor.extensionReceiverParameter
thisReceivers.size == 1 -> thisReceivers.single()
else -> {
BindingContextUtils.reportAmbiguousLabel(context.trace, targetLabel, declarationsByLabel)
@@ -0,0 +1,9 @@
// FIR_IDENTICAL
// !LANGUAGE: +ContextReceivers
// WITH_STDLIB
fun testLabels(source: Collection<String>) {
val r = buildList {
source.mapTo(this@buildList) { it.length }
}
}
@@ -0,0 +1,3 @@
package
public fun testLabels(/*0*/ source: kotlin.collections.Collection<kotlin.String>): kotlin.Unit
@@ -10660,6 +10660,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/insideDeclaration.kt");
}
@Test
@TestMetadata("labelFromFunctionName.kt")
public void testLabelFromFunctionName() throws Exception {
runTest("compiler/testData/diagnostics/tests/extensions/contextReceivers/labelFromFunctionName.kt");
}
@Test
@TestMetadata("labelsFromClassNameForbidden.kt")
public void testLabelsFromClassNameForbidden() throws Exception {