From 24bb9a4e14050fa0656e52778290e90eb361ae12 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 25 Jun 2021 16:33:13 +0300 Subject: [PATCH] Approximate expected type before reporting INTEGER_OPERATOR_RESOLVE_WILL_CHANGE ^KT-47447 Fixed --- .../runners/FirOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ ...FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java | 6 ++++++ .../checkers/NewSchemeOfIntegerOperatorResolutionChecker.kt | 3 ++- compiler/testData/diagnostics/tests/numbers/kt47447.kt | 6 ++++++ compiler/testData/diagnostics/tests/numbers/kt47447.txt | 3 +++ .../kotlin/test/runners/DiagnosticTestGenerated.java | 6 ++++++ .../DiagnosisCompilerTestFE10TestdataTestGenerated.java | 6 ++++++ 7 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/numbers/kt47447.kt create mode 100644 compiler/testData/diagnostics/tests/numbers/kt47447.txt 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 58f618e0cd6..e33997040d4 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 @@ -19497,6 +19497,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/numbers/kt41679.kt"); } + @Test + @TestMetadata("kt47447.kt") + public void testKt47447() throws Exception { + runTest("compiler/testData/diagnostics/tests/numbers/kt47447.kt"); + } + @Test @TestMetadata("literalReceiverWithIntegerValueType.kt") public void testLiteralReceiverWithIntegerValueType() 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 87f4028b81b..d1db4096d64 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 @@ -19497,6 +19497,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/numbers/kt41679.kt"); } + @Test + @TestMetadata("kt47447.kt") + public void testKt47447() throws Exception { + runTest("compiler/testData/diagnostics/tests/numbers/kt47447.kt"); + } + @Test @TestMetadata("literalReceiverWithIntegerValueType.kt") public void testLiteralReceiverWithIntegerValueType() throws Exception { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/NewSchemeOfIntegerOperatorResolutionChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/NewSchemeOfIntegerOperatorResolutionChecker.kt index c8b5e255930..2a21d1687d9 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/NewSchemeOfIntegerOperatorResolutionChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/NewSchemeOfIntegerOperatorResolutionChecker.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall import org.jetbrains.kotlin.resolve.constants.IntegerLiteralTypeConstructor import org.jetbrains.kotlin.resolve.constants.IntegerValueTypeConstant import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe +import org.jetbrains.kotlin.types.lowerIfFlexible object NewSchemeOfIntegerOperatorResolutionChecker : CallChecker { override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) { @@ -30,7 +31,7 @@ object NewSchemeOfIntegerOperatorResolutionChecker : CallChecker { valueParameter.varargElementType ?: continue } else { valueParameter.type - }.unwrap() + }.unwrap().lowerIfFlexible() for (argument in arguments.arguments) { val expression = argument.getArgumentExpression() ?: continue val compileTimeValue = diff --git a/compiler/testData/diagnostics/tests/numbers/kt47447.kt b/compiler/testData/diagnostics/tests/numbers/kt47447.kt new file mode 100644 index 00000000000..7f423fc03c2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/numbers/kt47447.kt @@ -0,0 +1,6 @@ +// FIR_IDENTICAL +// LANGUAGE: -ApproximateIntegerLiteralTypesInReceiverPosition +// ISSUE: KT-47447 +// FULL_JDK + +fun test()= java.util.Objects.requireNonNull(1 + 1) diff --git a/compiler/testData/diagnostics/tests/numbers/kt47447.txt b/compiler/testData/diagnostics/tests/numbers/kt47447.txt new file mode 100644 index 00000000000..e118507421f --- /dev/null +++ b/compiler/testData/diagnostics/tests/numbers/kt47447.txt @@ -0,0 +1,3 @@ +package + +public fun test(): kotlin.Int! 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 777ed93f94c..5e8f1f716b8 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 @@ -19503,6 +19503,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/numbers/kt41679.kt"); } + @Test + @TestMetadata("kt47447.kt") + public void testKt47447() throws Exception { + runTest("compiler/testData/diagnostics/tests/numbers/kt47447.kt"); + } + @Test @TestMetadata("literalReceiverWithIntegerValueType.kt") public void testLiteralReceiverWithIntegerValueType() throws Exception { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 0ffbe4f29fe..c2e8f770db1 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -19497,6 +19497,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/numbers/kt41679.kt"); } + @Test + @TestMetadata("kt47447.kt") + public void testKt47447() throws Exception { + runTest("compiler/testData/diagnostics/tests/numbers/kt47447.kt"); + } + @Test @TestMetadata("literalReceiverWithIntegerValueType.kt") public void testLiteralReceiverWithIntegerValueType() throws Exception {