mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 06:39:38 +07:00
[jvm-lang] provide target substitutor via method request
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package com.intellij.lang.jvm.actions
|
||||
|
||||
import com.intellij.lang.jvm.JvmModifier
|
||||
import com.intellij.lang.jvm.types.JvmSubstitutor
|
||||
import com.intellij.psi.codeStyle.SuggestedNameInfo
|
||||
|
||||
interface CreateMethodRequest {
|
||||
@@ -31,6 +32,8 @@ interface CreateMethodRequest {
|
||||
val annotations: Collection<AnnotationRequest>
|
||||
|
||||
val parameters: List<ExpectedParameter>
|
||||
|
||||
val targetSubstitutor: JvmSubstitutor
|
||||
}
|
||||
|
||||
typealias ExpectedParameter = Pair<SuggestedNameInfo, Any? /* ExpectedTypeInfo[]*/>
|
||||
|
||||
@@ -159,7 +159,8 @@ private class JavaMethodRenderer(
|
||||
|
||||
private fun setupTemplate(method: PsiMethod): TemplateBuilderImpl {
|
||||
val builder = TemplateBuilderImpl(method)
|
||||
val guesser = GuessTypeParameters(project, factory, builder, javaUsage?.targetSubstitutor)
|
||||
val substitutor = JvmPsiConversionHelper.getInstance(project).convertSubstitutor(request.targetSubstitutor)
|
||||
val guesser = GuessTypeParameters(project, factory, builder, substitutor)
|
||||
setupTypeElement(guesser, method.returnTypeElement, request.returnType)
|
||||
builder.setupParameters(guesser, method)
|
||||
builder.setEndVariableAfter(method.body ?: method)
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.lang.jvm.JvmModifier
|
||||
import com.intellij.lang.jvm.actions.AnnotationRequest
|
||||
import com.intellij.lang.jvm.actions.CreateMethodRequest
|
||||
import com.intellij.lang.jvm.actions.ExpectedParameter
|
||||
import com.intellij.lang.jvm.types.JvmSubstitutor
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager
|
||||
import com.intellij.psi.codeStyle.VariableKind
|
||||
@@ -53,7 +54,10 @@ class CreateMethodFromJavaUsageRequest(
|
||||
|
||||
override val returnType: Any? get() = guessExpectedTypes(methodCall, methodCall.parent is PsiStatement)
|
||||
|
||||
val targetSubstitutor: PsiSubstitutor get() = getTargetSubstitutor(methodCall)
|
||||
override val targetSubstitutor: JvmSubstitutor get() {
|
||||
val call = methodCall
|
||||
return PsiJvmSubstitutor(call.project, getTargetSubstitutor(call))
|
||||
}
|
||||
|
||||
override val parameters: List<ExpectedParameter>
|
||||
get() {
|
||||
|
||||
@@ -7,8 +7,11 @@ import com.intellij.codeInsight.daemon.QuickFixActionRegistrar
|
||||
import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider
|
||||
import com.intellij.lang.jvm.JvmModifier
|
||||
import com.intellij.lang.jvm.actions.*
|
||||
import com.intellij.lang.jvm.types.JvmSubstitutor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiJvmSubstitutor
|
||||
import com.intellij.psi.PsiModifier
|
||||
import com.intellij.psi.PsiSubstitutor
|
||||
import com.intellij.psi.PsiType
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleSettings
|
||||
@@ -71,6 +74,8 @@ class CreateEventHandlerRequest(element: XmlAttributeValue) : CreateMethodReques
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
override val targetSubstitutor: JvmSubstitutor get() = PsiJvmSubstitutor(myProject, PsiSubstitutor.EMPTY)
|
||||
}
|
||||
|
||||
private fun getVisibility(project: Project): JvmModifier {
|
||||
|
||||
Reference in New Issue
Block a user