diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsSmokeTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsSmokeTestGenerated.java index f40c7e45516..f79b536a549 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsSmokeTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsSmokeTestGenerated.java @@ -2501,6 +2501,11 @@ public class FirDiagnosticsSmokeTestGenerated extends AbstractFirDiagnosticsSmok runTest("compiler/testData/diagnostics/tests/callableReference/resolve/multipleOutersAndMultipleCallableReferences.kt"); } + @TestMetadata("noAmbiguityBetweenTopLevelAndMemberProperty.kt") + public void testNoAmbiguityBetweenTopLevelAndMemberProperty() throws Exception { + runTest("compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.kt"); + } + @TestMetadata("noFakeDescriptorForObject.kt") public void testNoFakeDescriptorForObject() throws Exception { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/noFakeDescriptorForObject.kt"); @@ -17060,6 +17065,11 @@ public class FirDiagnosticsSmokeTestGenerated extends AbstractFirDiagnosticsSmok runTest("compiler/testData/diagnostics/tests/regressions/kt2768.kt"); } + @TestMetadata("kt28001.kt") + public void testKt28001() throws Exception { + runTest("compiler/testData/diagnostics/tests/regressions/kt28001.kt"); + } + @TestMetadata("kt282.kt") public void testKt282() throws Exception { runTest("compiler/testData/diagnostics/tests/regressions/kt282.kt"); diff --git a/compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.kt b/compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.kt new file mode 100644 index 00000000000..8a1a1d391b2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.kt @@ -0,0 +1,16 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + +import kotlin.reflect.KProperty0 +import kotlin.reflect.KProperty1 + +fun property(property: KProperty0): Int = 1 +fun property(property: KProperty1): String = "" + +val subject = "" + +class O { + val subject = "" +} + +val someProperty0 = property(::subject) +val someProperty1 = property(O::subject) \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.txt b/compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.txt new file mode 100644 index 00000000000..f9979da24f6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.txt @@ -0,0 +1,15 @@ +package + +public val someProperty0: kotlin.Int +public val someProperty1: kotlin.String +public val subject: kotlin.String = "" +public fun property(/*0*/ property: kotlin.reflect.KProperty0): kotlin.Int +public fun property(/*0*/ property: kotlin.reflect.KProperty1): kotlin.String + +public final class O { + public constructor O() + public final val subject: kotlin.String = "" + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/tests/regressions/kt28001.kt b/compiler/testData/diagnostics/tests/regressions/kt28001.kt new file mode 100644 index 00000000000..0f51ff2f666 --- /dev/null +++ b/compiler/testData/diagnostics/tests/regressions/kt28001.kt @@ -0,0 +1,32 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER + +private object Case1 { + interface Validator + + class CharSequenceValidator: Validator + + class PredicateValidator(val predicate: (T) -> Boolean): Validator + + class CompositeValidator(vararg val validators: Validator) + + fun process(input: String) = true + + fun main() { + val validators1 = CompositeValidator(CharSequenceValidator(), PredicateValidator(::process)) + val validators2 = CompositeValidator(CharSequenceValidator(), PredicateValidator(::process)) + val validators3 = CompositeValidator(CharSequenceValidator(), PredicateValidator { it: String -> process(it) }) + } +} + +private object Case2 { + interface Expr + data class Add(val left: Expr, val right: Expr): Expr + data class Subtract(val left: Expr, val right: Expr): Expr + + fun f() { + val operators1 = listOf(::Add, ::Subtract) + val operators2 = listOf<(Expr, Expr) -> Expr>(::Add, ::Subtract) + } + + fun listOf(vararg elements: T): List = TODO() +} diff --git a/compiler/testData/diagnostics/tests/regressions/kt28001.txt b/compiler/testData/diagnostics/tests/regressions/kt28001.txt new file mode 100644 index 00000000000..8ef1caddc8a --- /dev/null +++ b/compiler/testData/diagnostics/tests/regressions/kt28001.txt @@ -0,0 +1,78 @@ +package + +private object Case1 { + private constructor Case1() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun main(): kotlin.Unit + public final fun process(/*0*/ input: kotlin.String): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class CharSequenceValidator : Case1.Validator { + public constructor CharSequenceValidator() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class CompositeValidator { + public constructor CompositeValidator(/*0*/ vararg validators: Case1.Validator /*kotlin.Array>*/) + public final val validators: kotlin.Array> + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class PredicateValidator : Case1.Validator { + public constructor PredicateValidator(/*0*/ predicate: (T) -> kotlin.Boolean) + public final val predicate: (T) -> kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface Validator { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +private object Case2 { + private constructor Case2() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun f(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun listOf(/*0*/ vararg elements: T /*kotlin.Array*/): kotlin.collections.List + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final data class Add : Case2.Expr { + public constructor Add(/*0*/ left: Case2.Expr, /*1*/ right: Case2.Expr) + public final val left: Case2.Expr + public final val right: Case2.Expr + public final operator /*synthesized*/ fun component1(): Case2.Expr + public final operator /*synthesized*/ fun component2(): Case2.Expr + public final /*synthesized*/ fun copy(/*0*/ left: Case2.Expr = ..., /*1*/ right: Case2.Expr = ...): Case2.Add + public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String + } + + public interface Expr { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final data class Subtract : Case2.Expr { + public constructor Subtract(/*0*/ left: Case2.Expr, /*1*/ right: Case2.Expr) + public final val left: Case2.Expr + public final val right: Case2.Expr + public final operator /*synthesized*/ fun component1(): Case2.Expr + public final operator /*synthesized*/ fun component2(): Case2.Expr + public final /*synthesized*/ fun copy(/*0*/ left: Case2.Expr = ..., /*1*/ right: Case2.Expr = ...): Case2.Subtract + public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index ee656f75e4d..62e3be7bc91 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -2508,6 +2508,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/multipleOutersAndMultipleCallableReferences.kt"); } + @TestMetadata("noAmbiguityBetweenTopLevelAndMemberProperty.kt") + public void testNoAmbiguityBetweenTopLevelAndMemberProperty() throws Exception { + runTest("compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.kt"); + } + @TestMetadata("noFakeDescriptorForObject.kt") public void testNoFakeDescriptorForObject() throws Exception { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/noFakeDescriptorForObject.kt"); @@ -17072,6 +17077,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { runTest("compiler/testData/diagnostics/tests/regressions/kt2768.kt"); } + @TestMetadata("kt28001.kt") + public void testKt28001() throws Exception { + runTest("compiler/testData/diagnostics/tests/regressions/kt28001.kt"); + } + @TestMetadata("kt282.kt") public void testKt282() throws Exception { runTest("compiler/testData/diagnostics/tests/regressions/kt282.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index afce997591a..c64432ceb2c 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -2503,6 +2503,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/callableReference/resolve/multipleOutersAndMultipleCallableReferences.kt"); } + @TestMetadata("noAmbiguityBetweenTopLevelAndMemberProperty.kt") + public void testNoAmbiguityBetweenTopLevelAndMemberProperty() throws Exception { + runTest("compiler/testData/diagnostics/tests/callableReference/resolve/noAmbiguityBetweenTopLevelAndMemberProperty.kt"); + } + @TestMetadata("noFakeDescriptorForObject.kt") public void testNoFakeDescriptorForObject() throws Exception { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/noFakeDescriptorForObject.kt"); @@ -17062,6 +17067,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/regressions/kt2768.kt"); } + @TestMetadata("kt28001.kt") + public void testKt28001() throws Exception { + runTest("compiler/testData/diagnostics/tests/regressions/kt28001.kt"); + } + @TestMetadata("kt282.kt") public void testKt282() throws Exception { runTest("compiler/testData/diagnostics/tests/regressions/kt282.kt");