From f4bdf54601f5110ca63d7347c6a1f18dd698c1ea Mon Sep 17 00:00:00 2001 From: Pavel Mikhailovskii Date: Mon, 10 Oct 2022 22:35:10 +0200 Subject: [PATCH] KT-8575 Fix warnings for Java synthetic properties --- ...isCompilerTestFE10TestdataTestGenerated.java | 12 ++++++------ .../FirOldFrontendDiagnosticsTestGenerated.java | 12 ++++++------ ...ndDiagnosticsWithLightTreeTestGenerated.java | 12 ++++++------ ...upportedSyntheticCallableReferenceChecker.kt | 16 +++++----------- .../jetbrains/kotlin/diagnostics/Errors.java | 2 -- .../rendering/DefaultErrorMessages.java | 2 -- .../unsupported/syntheticProperties.fir.kt | 2 ++ .../unsupported/syntheticProperties.kt | 4 +++- ...ySupportedSyntheticJavaPropertyReference.kt} | 1 + ...SupportedSyntheticJavaPropertyReference.txt} | 0 ...lySupportedSyntheticJavaPropertyReference.kt | 17 ----------------- .../SyntheticJavaPropertyReference.kt | 4 ++-- .../test/runners/DiagnosticTestGenerated.java | 12 ++++++------ 13 files changed, 37 insertions(+), 59 deletions(-) rename compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/{PartiallySupportedSyntheticJavaPropertyReference.fir.kt => FullySupportedSyntheticJavaPropertyReference.kt} (94%) rename compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/{PartiallySupportedSyntheticJavaPropertyReference.txt => FullySupportedSyntheticJavaPropertyReference.txt} (100%) delete mode 100644 compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index bc8ac6a80b6..a6b46eff74c 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -31541,6 +31541,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FromTwoBases.kt"); } + @Test + @TestMetadata("FullySupportedSyntheticJavaPropertyReference.kt") + public void testFullySupportedSyntheticJavaPropertyReference() throws Exception { + runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.kt"); + } + @Test @TestMetadata("GenericClass.kt") public void testGenericClass() throws Exception { @@ -31643,12 +31649,6 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/OverrideGetterOnly.kt"); } - @Test - @TestMetadata("PartiallySupportedSyntheticJavaPropertyReference.kt") - public void testPartiallySupportedSyntheticJavaPropertyReference() throws Exception { - runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt"); - } - @Test @TestMetadata("SetterHasHigherAccess.kt") public void testSetterHasHigherAccess() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index bdc917ffd8c..9cf252ba0dc 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -31541,6 +31541,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FromTwoBases.kt"); } + @Test + @TestMetadata("FullySupportedSyntheticJavaPropertyReference.kt") + public void testFullySupportedSyntheticJavaPropertyReference() throws Exception { + runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.kt"); + } + @Test @TestMetadata("GenericClass.kt") public void testGenericClass() throws Exception { @@ -31643,12 +31649,6 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/OverrideGetterOnly.kt"); } - @Test - @TestMetadata("PartiallySupportedSyntheticJavaPropertyReference.kt") - public void testPartiallySupportedSyntheticJavaPropertyReference() throws Exception { - runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt"); - } - @Test @TestMetadata("SetterHasHigherAccess.kt") public void testSetterHasHigherAccess() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index 02518e0cdce..94572d45052 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -31541,6 +31541,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FromTwoBases.kt"); } + @Test + @TestMetadata("FullySupportedSyntheticJavaPropertyReference.kt") + public void testFullySupportedSyntheticJavaPropertyReference() throws Exception { + runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.kt"); + } + @Test @TestMetadata("GenericClass.kt") public void testGenericClass() throws Exception { @@ -31643,12 +31649,6 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/OverrideGetterOnly.kt"); } - @Test - @TestMetadata("PartiallySupportedSyntheticJavaPropertyReference.kt") - public void testPartiallySupportedSyntheticJavaPropertyReference() throws Exception { - runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt"); - } - @Test @TestMetadata("SetterHasHigherAccess.kt") public void testSetterHasHigherAccess() throws Exception { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/UnsupportedSyntheticCallableReferenceChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/UnsupportedSyntheticCallableReferenceChecker.kt index cce34314aa3..ca9e06a553a 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/UnsupportedSyntheticCallableReferenceChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/UnsupportedSyntheticCallableReferenceChecker.kt @@ -18,8 +18,7 @@ package org.jetbrains.kotlin.resolve.jvm.checkers import com.intellij.psi.PsiElement import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.diagnostics.Errors.CALLABLE_REFERENCE_TO_JAVA_SYNTHETIC_PROPERTY -import org.jetbrains.kotlin.diagnostics.Errors.UNSUPPORTED +import org.jetbrains.kotlin.diagnostics.Errors.UNSUPPORTED_FEATURE import org.jetbrains.kotlin.psi.KtPropertyDelegate import org.jetbrains.kotlin.psi.psiUtil.unwrapParenthesesLabelsAndAnnotationsDeeply import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker @@ -37,16 +36,11 @@ class UnsupportedSyntheticCallableReferenceChecker : CallChecker { if (callableReferenceExpression.unwrapParenthesesLabelsAndAnnotationsDeeply() is KtPropertyDelegate) return if (resolvedCall.resultingDescriptor is SyntheticJavaPropertyDescriptor) { - val diagnostic = if ( - context.languageVersionSettings.supportsFeature(LanguageFeature.NewInference) && - context.languageVersionSettings.supportsFeature(LanguageFeature.ReferencesToSyntheticJavaProperties) - ) { - CALLABLE_REFERENCE_TO_JAVA_SYNTHETIC_PROPERTY.on(reportOn) - } else { - UNSUPPORTED.on(reportOn, "reference to the synthetic extension property for a Java get/set method") + if (!context.languageVersionSettings.supportsFeature(LanguageFeature.ReferencesToSyntheticJavaProperties)) { + context.trace.report(UNSUPPORTED_FEATURE.on(reportOn, LanguageFeature.ReferencesToSyntheticJavaProperties to context.languageVersionSettings)) + } else if (!context.languageVersionSettings.supportsFeature(LanguageFeature.NewInference)) { + context.trace.report(UNSUPPORTED_FEATURE.on(reportOn, LanguageFeature.NewInference to context.languageVersionSettings)) } - - context.trace.report(diagnostic) } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 1342545f78c..82d0b78fb3e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -935,8 +935,6 @@ public interface Errors { DiagnosticFactory0 NULLABLE_TYPE_IN_CLASS_LITERAL_LHS = DiagnosticFactory0.create(ERROR); DiagnosticFactory1 EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS = DiagnosticFactory1.create(ERROR); - DiagnosticFactory0 CALLABLE_REFERENCE_TO_JAVA_SYNTHETIC_PROPERTY = DiagnosticFactory0.create(WARNING); - DiagnosticFactory0 ADAPTED_CALLABLE_REFERENCE_AGAINST_REFLECTION_TYPE = DiagnosticFactory0.create(ERROR); // Destructuring-declarations diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index 853e2608232..ebfa78793d2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -1088,8 +1088,6 @@ public class DefaultErrorMessages { MAP.put(NULLABLE_TYPE_IN_CLASS_LITERAL_LHS, "Type in a class literal must not be nullable"); MAP.put(EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS, "Expression in a class literal has a nullable type ''{0}'', use !! to make the type non-nullable", RENDER_TYPE); - MAP.put(CALLABLE_REFERENCE_TO_JAVA_SYNTHETIC_PROPERTY, "References to the synthetic extension properties for a Java get/set methods aren't supported fully, please use reference to a method"); - MAP.put(ADAPTED_CALLABLE_REFERENCE_AGAINST_REFLECTION_TYPE, "Adapted callable reference cannot be resolved against reflective types"); //Inline diff --git a/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.fir.kt b/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.fir.kt index 1fd83f1c2a1..e7708239797 100644 --- a/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.fir.kt +++ b/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.fir.kt @@ -1,3 +1,5 @@ +// !LANGUAGE: -ReferencesToSyntheticJavaProperties + // FILE: Customer.java public class Customer { private String name; diff --git a/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.kt b/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.kt index a60dd528911..05a705f07fa 100644 --- a/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.kt +++ b/compiler/testData/diagnostics/tests/callableReference/unsupported/syntheticProperties.kt @@ -1,3 +1,5 @@ +// !LANGUAGE: -ReferencesToSyntheticJavaProperties + // FILE: Customer.java public class Customer { private String name; @@ -16,4 +18,4 @@ public class Customer { } // FILE: test.kt -val customerName = Customer::name +val customerName = Customer::name diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.fir.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.kt similarity index 94% rename from compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.fir.kt rename to compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.kt index e8962ae225e..61bcc7d228f 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.fir.kt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +ReferencesToSyntheticJavaProperties // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.txt b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.txt similarity index 100% rename from compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.txt rename to compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.txt diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt deleted file mode 100644 index de197972c42..00000000000 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt +++ /dev/null @@ -1,17 +0,0 @@ -// !LANGUAGE: +ReferencesToSyntheticJavaProperties -// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION - -// FILE: KotlinFile.kt - -fun call(c: Any) {} - -fun test() { - JavaClass::foo - call(JavaClass::foo) -} - -// FILE: JavaClass.java - -public class JavaClass { - public String getFoo() {} -} diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/SyntheticJavaPropertyReference.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/SyntheticJavaPropertyReference.kt index ecb38855901..2e0b6b04157 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/SyntheticJavaPropertyReference.kt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/SyntheticJavaPropertyReference.kt @@ -6,8 +6,8 @@ fun call(c: Any) {} fun test() { - JavaClass::foo - call(JavaClass::foo) + JavaClass::foo + call(JavaClass::foo) } // FILE: JavaClass.java 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 4fc39ddd920..7a7c9b48448 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 @@ -31631,6 +31631,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FromTwoBases.kt"); } + @Test + @TestMetadata("FullySupportedSyntheticJavaPropertyReference.kt") + public void testFullySupportedSyntheticJavaPropertyReference() throws Exception { + runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FullySupportedSyntheticJavaPropertyReference.kt"); + } + @Test @TestMetadata("GenericClass.kt") public void testGenericClass() throws Exception { @@ -31733,12 +31739,6 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/OverrideGetterOnly.kt"); } - @Test - @TestMetadata("PartiallySupportedSyntheticJavaPropertyReference.kt") - public void testPartiallySupportedSyntheticJavaPropertyReference() throws Exception { - runTest("compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/PartiallySupportedSyntheticJavaPropertyReference.kt"); - } - @Test @TestMetadata("SetterHasHigherAccess.kt") public void testSetterHasHigherAccess() throws Exception {