[jvm-lang] refactor & cleanup action utils

- add and use JvmSubstitutor.toPsiSubstitutor();
- rename JvmModifier.toPsi to toPsiModifier, make it internal;
- make toJavaClassOrNull() internal.
This commit is contained in:
Daniil Ovchinnikov
2017-09-18 16:59:22 +02:00
parent 10f59673d6
commit bf07d7cc4c
3 changed files with 12 additions and 10 deletions
@@ -140,10 +140,10 @@ private fun extractRenderData(targetClass: PsiClass, request: CreateFieldRequest
targetClass,
fieldName,
extractExpectedTypes(project, request.fieldType).toTypedArray(),
JvmPsiConversionHelper.getInstance(project).convertSubstitutor(request.targetSubstitutor),
request.targetSubstitutor.toPsiSubstitutor(project),
javaUsage?.reference,
javaUsage?.anchor,
modifiersToRender.map(JvmModifier::toPsi),
modifiersToRender.map(JvmModifier::toPsiModifier),
renderConstant
)
}
@@ -134,7 +134,7 @@ private class JavaMethodRenderer(
}
for (modifier in modifiersToRender) {
setModifierProperty(method, modifier.toPsi(), true)
setModifierProperty(method, modifier.toPsiModifier(), true)
}
for (annotation in request.annotations) {
@@ -159,7 +159,7 @@ private class JavaMethodRenderer(
private fun setupTemplate(method: PsiMethod): TemplateBuilderImpl {
val builder = TemplateBuilderImpl(method)
val substitutor = JvmPsiConversionHelper.getInstance(project).convertSubstitutor(request.targetSubstitutor)
val substitutor = request.targetSubstitutor.toPsiSubstitutor(project)
val guesser = GuessTypeParameters(project, factory, builder, substitutor)
setupTypeElement(guesser, method.returnTypeElement, request.returnType)
builder.setupParameters(guesser, method)
@@ -24,16 +24,14 @@ import com.intellij.lang.jvm.JvmClass
import com.intellij.lang.jvm.JvmModifier
import com.intellij.lang.jvm.actions.ExpectedType
import com.intellij.lang.jvm.actions.ExpectedTypes
import com.intellij.lang.jvm.types.JvmSubstitutor
import com.intellij.openapi.project.Project
import com.intellij.psi.JvmPsiConversionHelper
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiModifier
import com.intellij.psi.*
import com.intellij.psi.PsiModifier.ModifierConstant
import com.intellij.psi.PsiTypeParameter
import com.intellij.psi.impl.compiled.ClsClassImpl
@ModifierConstant
fun JvmModifier.toPsi(): String = when (this) {
internal fun JvmModifier.toPsiModifier(): String = when (this) {
JvmModifier.PUBLIC -> PsiModifier.PUBLIC
JvmModifier.PROTECTED -> PsiModifier.PROTECTED
JvmModifier.PRIVATE -> PsiModifier.PRIVATE
@@ -55,7 +53,7 @@ fun JvmModifier.toPsi(): String = when (this) {
*
* @return Java PsiClass or `null` if the receiver is not a Java PsiClass
*/
fun JvmClass.toJavaClassOrNull(): PsiClass? {
internal fun JvmClass.toJavaClassOrNull(): PsiClass? {
if (this !is PsiClass) return null
if (this is PsiTypeParameter) return null
if (this is ClsClassImpl) return null
@@ -91,3 +89,7 @@ private fun ExpectedType.Kind.infoKind(): Int {
ExpectedType.Kind.SUBTYPE -> ExpectedTypeInfo.TYPE_OR_SUBTYPE
}
}
internal fun JvmSubstitutor.toPsiSubstitutor(project: Project): PsiSubstitutor {
return JvmPsiConversionHelper.getInstance(project).convertSubstitutor(this)
}