[Analysis API] support unsigned arrays creation functions

IDEA-335151, KT-62663


Merge-request: KT-MR-12614
Merged-by: Alexander Kuznetsov <Aleksander.Kuznetsov@jetbrains.com>
This commit is contained in:
Alexander Kuznetsov
2023-10-18 10:53:52 +00:00
committed by Space Team
parent 4922223bec
commit 45792c2e60
6 changed files with 51 additions and 8 deletions
@@ -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
}
@@ -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 {