diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 2459e675619..08c647693c0 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -28302,6 +28302,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/operatorsOverloading/EqualsOperatorOverrideHierarchies.kt"); } + @Test + @TestMetadata("implicitInvokeOnPropertyInItsInitializer.kt") + public void testImplicitInvokeOnPropertyInItsInitializer() { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt"); + } + @Test @TestMetadata("incForAssignmentSmartCast.kt") public void testIncForAssignmentSmartCast() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index c31cfbf7eb7..c15f8ff4cc8 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -28302,6 +28302,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/operatorsOverloading/EqualsOperatorOverrideHierarchies.kt"); } + @Test + @TestMetadata("implicitInvokeOnPropertyInItsInitializer.kt") + public void testImplicitInvokeOnPropertyInItsInitializer() { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt"); + } + @Test @TestMetadata("incForAssignmentSmartCast.kt") public void testIncForAssignmentSmartCast() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index afedbb5ebd2..897a1b5c182 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -26012,6 +26012,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/operatorsOverloading/EqualsOperatorOverrideHierarchies.kt"); } + @Test + @TestMetadata("implicitInvokeOnPropertyInItsInitializer.kt") + public void testImplicitInvokeOnPropertyInItsInitializer() { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt"); + } + @Test @TestMetadata("incForAssignmentSmartCast.kt") public void testIncForAssignmentSmartCast() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index ff0f6c9bcf0..98e4250d7b7 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -26018,6 +26018,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/operatorsOverloading/EqualsOperatorOverrideHierarchies.kt"); } + @Test + @TestMetadata("implicitInvokeOnPropertyInItsInitializer.kt") + public void testImplicitInvokeOnPropertyInItsInitializer() { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt"); + } + @Test @TestMetadata("incForAssignmentSmartCast.kt") public void testIncForAssignmentSmartCast() { diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.fir.kt b/compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.fir.kt new file mode 100644 index 00000000000..96f93668bbe --- /dev/null +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.fir.kt @@ -0,0 +1,42 @@ +// ISSUE: KT-65576 + +fun foo(): Int = 0 + +object Implicit { + operator fun Any.invoke(): String = "Fail" + + val foo = foo() +} + +object Explicit { + operator fun Any.invoke(): String = "Fail" + + val foo: String = foo() +} + +class Inv(val value: T) + +object ImplicitWrapped { + operator fun Inv<*>.invoke(): Inv = Inv("Fail") + + val foo = Inv(foo)() +} + +object ImplicitIndirect { + operator fun Any.invoke(): String = "Fail" + + val foo get() = bar() + val bar get() = baz() + val baz get() = foo() +} + +fun takeInt(x: Int) {} + +fun test() { + takeInt(Implicit.foo) // should be an error + takeInt(Explicit.foo) // should be an error + takeInt(ImplicitWrapped.foo) // should be an error + takeInt(ImplicitIndirect.foo) // should be an error + takeInt(ImplicitIndirect.bar) // should be an error + takeInt(ImplicitIndirect.baz) // should be an error +} diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt b/compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt new file mode 100644 index 00000000000..43444bc5a31 --- /dev/null +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt @@ -0,0 +1,42 @@ +// ISSUE: KT-65576 + +fun foo(): Int = 0 + +object Implicit { + operator fun Any.invoke(): String = "Fail" + + val foo = foo() +} + +object Explicit { + operator fun Any.invoke(): String = "Fail" + + val foo: String = foo() +} + +class Inv(val value: T) + +object ImplicitWrapped { + operator fun Inv<*>.invoke(): Inv = Inv("Fail") + + val foo = Inv(foo)() +} + +object ImplicitIndirect { + operator fun Any.invoke(): String = "Fail" + + val foo get() = bar() + val bar get() = baz() + val baz get() = foo() +} + +fun takeInt(x: Int) {} + +fun test() { + takeInt(Implicit.foo) // should be an error + takeInt(Explicit.foo) // should be an error + takeInt(ImplicitWrapped.foo) // should be an error + takeInt(ImplicitIndirect.foo) // should be an error + takeInt(ImplicitIndirect.bar) // should be an error + takeInt(ImplicitIndirect.baz) // should be an error +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index e0a5de12f95..7ae63db5aac 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -28302,6 +28302,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/operatorsOverloading/EqualsOperatorOverrideHierarchies.kt"); } + @Test + @TestMetadata("implicitInvokeOnPropertyInItsInitializer.kt") + public void testImplicitInvokeOnPropertyInItsInitializer() { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/implicitInvokeOnPropertyInItsInitializer.kt"); + } + @Test @TestMetadata("incForAssignmentSmartCast.kt") public void testIncForAssignmentSmartCast() {