mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[kotlin] KTIJ-27048 parameters extracted
GitOrigin-RevId: f8967137cd8bd9f9ff0ec5f12921f42c35afbd43
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f41a75abd3
commit
4c6f8dbe4c
@@ -7,19 +7,14 @@ import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.renderer.types.KaExpandedTypeRenderingMode
|
||||
import org.jetbrains.kotlin.analysis.api.renderer.types.KaTypeRenderer
|
||||
import org.jetbrains.kotlin.analysis.api.renderer.types.impl.KaTypeRendererForSource
|
||||
import org.jetbrains.kotlin.analysis.api.signatures.KaFunctionSignature
|
||||
import org.jetbrains.kotlin.analysis.api.signatures.KaVariableSignature
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KaValueParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaErrorType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaFunctionType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaType
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
internal object CompletionShortNamesRenderer {
|
||||
context(KaSession)
|
||||
fun renderFunctionParameters(function: KaFunctionSignature<*>): String {
|
||||
return function.valueParameters.joinToString(", ", "(", ")") { renderFunctionParameter(it) }
|
||||
}
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
@@ -42,7 +37,7 @@ internal object CompletionShortNamesRenderer {
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
private fun renderFunctionParameter(parameter: KaVariableSignature<KaValueParameterSymbol>): String =
|
||||
fun renderFunctionParameter(parameter: KaVariableSignature<KaValueParameterSymbol>): String =
|
||||
"${if (parameter.symbol.isVararg) "vararg " else ""}${parameter.name.asString()}: ${
|
||||
parameter.returnType.renderNonErrorOrUnsubstituted(parameter.symbol.returnType)
|
||||
}${if (parameter.symbol.hasDefaultValue) " = ..." else ""}"
|
||||
|
||||
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaFunctionType
|
||||
import org.jetbrains.kotlin.analysis.api.types.KaType
|
||||
import org.jetbrains.kotlin.idea.completion.impl.k2.KotlinCompletionImplK2Bundle
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.CompletionShortNamesRenderer.renderFunctionParameters
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.CompletionShortNamesRenderer.renderFunctionalTypeParameters
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.renderer.render
|
||||
@@ -26,15 +25,7 @@ internal object TailTextProvider {
|
||||
context(KaSession)
|
||||
fun getTailText(
|
||||
signature: KaCallableSignature<*>,
|
||||
options: CallableInsertionOptions,
|
||||
): String = buildString {
|
||||
if (signature is KaFunctionSignature<*>) {
|
||||
if (insertLambdaBraces(signature, options.insertionStrategy)) {
|
||||
append(" {...} ")
|
||||
}
|
||||
append(renderFunctionParameters(signature))
|
||||
}
|
||||
|
||||
// use unsubstituted type when rendering receiver type of extension
|
||||
val symbol = signature.symbol
|
||||
symbol.receiverType?.let { renderReceiverType(it) }
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.util.endOffset
|
||||
import com.intellij.util.applyIf
|
||||
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
|
||||
import org.jetbrains.kotlin.analysis.api.KaSession
|
||||
import org.jetbrains.kotlin.analysis.api.signatures.KaFunctionSignature
|
||||
@@ -24,8 +25,7 @@ import org.jetbrains.kotlin.idea.completion.acceptOpeningBrace
|
||||
import org.jetbrains.kotlin.idea.completion.contributors.helpers.insertString
|
||||
import org.jetbrains.kotlin.idea.completion.handlers.isCharAt
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.*
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.CompletionShortNamesRenderer.renderFunctionParameters
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.TailTextProvider.getTailText
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.CompletionShortNamesRenderer.renderFunctionParameter
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.TailTextProvider.insertLambdaBraces
|
||||
import org.jetbrains.kotlin.idea.completion.lookups.factories.FunctionInsertionHelper.functionCanBeCalledWithoutExplicitTypeArguments
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
@@ -43,18 +43,27 @@ internal object FunctionLookupElementFactory {
|
||||
options: CallableInsertionOptions,
|
||||
expectedType: KaType? = null,
|
||||
): LookupElementBuilder {
|
||||
val insertEmptyLambda = insertLambdaBraces(signature, options.insertionStrategy)
|
||||
val valueParameters = signature.valueParameters
|
||||
val renderedDeclaration = valueParameters.joinToString(
|
||||
prefix = "(",
|
||||
postfix = ")",
|
||||
) { renderFunctionParameter(it) }
|
||||
|
||||
val insertLambdaBraces = insertLambdaBraces(signature, options.insertionStrategy)
|
||||
|
||||
val lookupObject = FunctionCallLookupObject(
|
||||
shortName = name,
|
||||
options = options,
|
||||
renderedDeclaration = renderFunctionParameters(signature),
|
||||
inputValueArgumentsAreRequired = signature.valueParameters.isNotEmpty(),
|
||||
renderedDeclaration = renderedDeclaration,
|
||||
inputValueArgumentsAreRequired = valueParameters.isNotEmpty(),
|
||||
inputTypeArgumentsAreRequired = !functionCanBeCalledWithoutExplicitTypeArguments(signature.symbol, expectedType),
|
||||
insertEmptyLambda = insertEmptyLambda,
|
||||
insertEmptyLambda = insertLambdaBraces,
|
||||
)
|
||||
|
||||
val builder = LookupElementBuilder.create(lookupObject, name.asString())
|
||||
.withTailText(getTailText(signature, options))
|
||||
.applyIf(insertLambdaBraces) { appendTailText(" {...} ", true) }
|
||||
.appendTailText(renderedDeclaration, true)
|
||||
.appendTailText(TailTextProvider.getTailText(signature), true)
|
||||
.let { withCallableSignatureInfo(signature, it) }
|
||||
.also { it.acceptOpeningBrace = true }
|
||||
return updateLookupElementBuilder(options, builder)
|
||||
|
||||
@@ -81,7 +81,7 @@ internal object VariableLookupElementFactory {
|
||||
val lookupObject = VariableLookupObject(name, options, rendered)
|
||||
markIfSyntheticJavaProperty(
|
||||
LookupElementBuilder.create(lookupObject, name.asString())
|
||||
.withTailText(getTailText(signature, options), true), signature.symbol
|
||||
.withTailText(getTailText(signature), true), signature.symbol
|
||||
).withInsertHandler(VariableInsertionHandler)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user