diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java index deb12e952d4..b33ca6565bd 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java @@ -4007,6 +4007,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis runTest("compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.kt"); } + @Test + @TestMetadata("superAccessToJavaField.kt") + public void testSuperAccessToJavaField() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.kt"); + } + @Test @TestMetadata("visibilityWithOverrides.kt") public void testVisibilityWithOverrides() throws Exception { diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java index fce8a5371a8..a89f3a798b2 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java @@ -3589,6 +3589,11 @@ public class LazyBodyIsNotTouchedTilContractsPhaseTestGenerated extends Abstract runTest("compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.kt"); } + @TestMetadata("superAccessToJavaField.kt") + public void testSuperAccessToJavaField() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.kt"); + } + @TestMetadata("visibilityWithOverrides.kt") public void testVisibilityWithOverrides() throws Exception { runTest("compiler/fir/analysis-tests/testData/resolve/visibility/visibilityWithOverrides.kt"); diff --git a/compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.fir.txt b/compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.fir.txt new file mode 100644 index 00000000000..9be35f23fc8 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.fir.txt @@ -0,0 +1,14 @@ +FILE: main.kt + public abstract interface MyBase : R|Base| { + } + public abstract class Implementation : R|Derived|, R|MyBase| { + public constructor(): R|Implementation| { + super() + } + + public final val parentNode: R|kotlin/String?| + public get(): R|kotlin/String?| { + ^ this@R|/Implementation|.super.R|/Derived.parent| + } + + } diff --git a/compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.kt b/compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.kt new file mode 100644 index 00000000000..2cb93db7763 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-49654 +// FULL_JDK + +// FILE: Base.java +public interface Base { + String getParent(); +} + +// FILE: Derived.java +public class Derived implements Base { + protected String parent = ""; + + public String getParent() { + return parent; + } +} + +// FILE: main.kt + +interface MyBase : Base + +abstract class Implementation : Derived(), MyBase { + val parentNode: String? get() = super.parent +} diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java index 43cbe72d3d6..28a6f69f82f 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java @@ -4007,6 +4007,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { runTest("compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.kt"); } + @Test + @TestMetadata("superAccessToJavaField.kt") + public void testSuperAccessToJavaField() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.kt"); + } + @Test @TestMetadata("visibilityWithOverrides.kt") public void testVisibilityWithOverrides() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java index 0a7c0da773d..9f92744ad77 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java @@ -4007,6 +4007,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/analysis-tests/testData/resolve/visibility/singletonConstructors.kt"); } + @Test + @TestMetadata("superAccessToJavaField.kt") + public void testSuperAccessToJavaField() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/visibility/superAccessToJavaField.kt"); + } + @Test @TestMetadata("visibilityWithOverrides.kt") public void testVisibilityWithOverrides() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt index 912cd9a022c..db791f70e7f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.resolve.calls import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirProperty +import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull import org.jetbrains.kotlin.fir.expressions.FirFunctionCall @@ -134,7 +134,7 @@ private fun BodyResolveComponents.getFunctionMembers(type: ConeKotlinType, name: private fun BodyResolveComponents.getPropertyMembers(type: ConeKotlinType, name: Name): Collection = buildList { type.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)?.processPropertiesByName(name) { - addIfNotNull(it.fir as? FirProperty) + addIfNotNull(it.fir as? FirVariable) } }