From 45792c2e60d7b0c3b0ae0e63eae19af91ea56698 Mon Sep 17 00:00:00 2001 From: Alexander Kuznetsov Date: Wed, 18 Oct 2023 10:53:52 +0000 Subject: [PATCH] [Analysis API] support unsigned arrays creation functions IDEA-335151, KT-62663 Merge-request: KT-MR-12614 Merged-by: Alexander Kuznetsov --- .../components/KtFe10CallResolver.kt | 9 +----- ...sSourceModuleResolveCallTestGenerated.java | 6 ++++ ...sSourceModuleResolveCallTestGenerated.java | 6 ++++ ...sSourceModuleResolveCallTestGenerated.java | 6 ++++ .../resolveCall/unsignedArrayOf.kt | 4 +++ .../resolveCall/unsignedArrayOf.txt | 28 +++++++++++++++++++ 6 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.kt create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.txt diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt index faa9e1c764b..949a578a387 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10CallResolver.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.analysis.api.descriptors.components -import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.calls.* import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession @@ -29,7 +28,6 @@ import org.jetbrains.kotlin.analysis.api.signatures.KtFunctionLikeSignature import org.jetbrains.kotlin.analysis.api.signatures.KtVariableLikeSignature import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.utils.printer.parentOfType -import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.diagnostics.* import org.jetbrains.kotlin.lexer.KtTokens @@ -548,12 +546,7 @@ internal class KtFe10CallResolver( private fun createSignature(symbol: KtSymbol, resultingDescriptor: CallableDescriptor): KtCallableSignature<*>? { val returnType = if (resultingDescriptor is ValueParameterDescriptor && resultingDescriptor.isVararg) { val arrayType = resultingDescriptor.returnType ?: return null - val primitiveArrayElementType = KotlinBuiltIns.getPrimitiveArrayElementType(arrayType) - if (primitiveArrayElementType == null) { - arrayType.arguments.singleOrNull()?.type - } else { - analysisContext.builtIns.getPrimitiveKotlinType(primitiveArrayElementType) - } + analysisContext.builtIns.getArrayElementType(arrayType) } else { resultingDescriptor.returnType } diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java index b2d68dd55b1..f44b8273499 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java @@ -862,6 +862,12 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/unresolvedSuperReference.kt"); } + @Test + @TestMetadata("unsignedArrayOf.kt") + public void testUnsignedArrayOf() throws Exception { + runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.kt"); + } + @Test @TestMetadata("variableAsFunction.kt") public void testVariableAsFunction() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java index f677bf6ad6b..152eba7f3e0 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java @@ -862,6 +862,12 @@ public class FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated extends Ab runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/unresolvedSuperReference.kt"); } + @Test + @TestMetadata("unsignedArrayOf.kt") + public void testUnsignedArrayOf() throws Exception { + runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.kt"); + } + @Test @TestMetadata("variableAsFunction.kt") public void testVariableAsFunction() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java index b0ce2691bcd..6f8ff06e269 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java @@ -862,6 +862,12 @@ public class FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated ext runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/unresolvedSuperReference.kt"); } + @Test + @TestMetadata("unsignedArrayOf.kt") + public void testUnsignedArrayOf() throws Exception { + runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.kt"); + } + @Test @TestMetadata("variableAsFunction.kt") public void testVariableAsFunction() throws Exception { diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.kt new file mode 100644 index 00000000000..3bceba3a464 --- /dev/null +++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.kt @@ -0,0 +1,4 @@ +// WITH_STDLIB +fun foo() { + println(uintArrayOf(42u)) +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.txt new file mode 100644 index 00000000000..7862373c53e --- /dev/null +++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/unsignedArrayOf.txt @@ -0,0 +1,28 @@ +KtSuccessCallInfo: + call = KtSimpleFunctionCall: + isImplicitInvoke = false + partiallyAppliedSymbol = KtPartiallyAppliedSymbol: + dispatchReceiver = null + extensionReceiver = null + signature = KtFunctionLikeSignature: + receiverType = null + returnType = kotlin.UIntArray + symbol = kotlin/uintArrayOf(vararg elements: kotlin.UInt): kotlin.UIntArray + valueParameters = [ + KtVariableLikeSignature: + name = elements + receiverType = null + returnType = kotlin.UInt + symbol = vararg elements: kotlin.UInt + callableIdIfNonLocal = null + ] + callableIdIfNonLocal = kotlin/uintArrayOf + typeArgumentsMapping = {} + argumentMapping = { + 42u -> (KtVariableLikeSignature: + name = elements + receiverType = null + returnType = kotlin.UInt + symbol = vararg elements: kotlin.UInt + callableIdIfNonLocal = null) + } \ No newline at end of file