mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[jvm] Add fieldRequest factory method
GitOrigin-RevId: ac0b8982fc03ee0a943910047a1d02837be6af58
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b50acf3ee5
commit
de7f4d9f91
@@ -0,0 +1,31 @@
|
||||
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.lang.jvm.actions
|
||||
|
||||
import com.intellij.lang.jvm.JvmModifier
|
||||
import com.intellij.lang.jvm.types.JvmSubstitutor
|
||||
import com.intellij.lang.jvm.types.JvmType
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiType
|
||||
|
||||
fun fieldRequest(
|
||||
name: String,
|
||||
substitutor: JvmSubstitutor,
|
||||
type: JvmType = PsiType.VOID,
|
||||
initializer: PsiElement? = null,
|
||||
modifiers: Collection<JvmModifier> = emptyList(),
|
||||
isConstant: Boolean = false
|
||||
) = object : CreateFieldRequest {
|
||||
override fun isValid(): Boolean = true
|
||||
|
||||
override fun getFieldName(): String = name
|
||||
|
||||
override fun getFieldType(): List<ExpectedType> = expectedTypes(type)
|
||||
|
||||
override fun getTargetSubstitutor(): JvmSubstitutor = substitutor
|
||||
|
||||
override fun getInitializer(): PsiElement? = initializer
|
||||
|
||||
override fun getModifiers(): Collection<JvmModifier> = modifiers
|
||||
|
||||
override fun isConstant(): Boolean = isConstant
|
||||
}
|
||||
+10
-25
@@ -3,11 +3,8 @@ package com.intellij.codeInspection
|
||||
|
||||
import com.intellij.analysis.JvmAnalysisBundle
|
||||
import com.intellij.lang.jvm.JvmModifier
|
||||
import com.intellij.lang.jvm.actions.CreateFieldRequest
|
||||
import com.intellij.lang.jvm.actions.ExpectedType
|
||||
import com.intellij.lang.jvm.actions.createAddFieldActions
|
||||
import com.intellij.lang.jvm.actions.expectedTypes
|
||||
import com.intellij.lang.jvm.types.JvmSubstitutor
|
||||
import com.intellij.lang.jvm.actions.fieldRequest
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||
import com.intellij.openapi.fileEditor.TextEditor
|
||||
import com.intellij.openapi.project.Project
|
||||
@@ -49,30 +46,18 @@ class SerializableHasSerialVersionUidFieldInspection : USerializableInspectionBa
|
||||
val containingFile = psiClass.containingFile ?: return
|
||||
val uFactory = uClass.getUastElementFactory(project) ?: return
|
||||
val serialUid = SerialVersionUIDBuilder.computeDefaultSUID(psiClass)
|
||||
val initializer = uFactory.createLongConstantExpression(serialUid, null)?.sourcePsi ?: return
|
||||
val action = createAddFieldActions(psiClass,
|
||||
SerialVersionUIDFieldInfo(HardcodedMethodConstants.SERIAL_VERSION_UID, initializer, project)).firstOrNull() ?: return
|
||||
val initializer = uFactory.createLongConstantExpression(serialUid, null)?.sourcePsi ?: return
|
||||
val action = createAddFieldActions(psiClass, fieldRequest(
|
||||
name = HardcodedMethodConstants.SERIAL_VERSION_UID,
|
||||
substitutor = PsiJvmSubstitutor(project, PsiSubstitutor.EMPTY),
|
||||
type = PsiType.LONG,
|
||||
initializer = initializer,
|
||||
modifiers = listOf(JvmModifier.PRIVATE, JvmModifier.STATIC),
|
||||
isConstant = true
|
||||
)).first()
|
||||
val vFile = containingFile.virtualFile ?: return
|
||||
val editor = (FileEditorManager.getInstance(project).getSelectedEditor(vFile) as? TextEditor)?.editor ?: return
|
||||
action.invoke(project, editor, containingFile)
|
||||
}
|
||||
}
|
||||
|
||||
private class SerialVersionUIDFieldInfo(private val name: String,
|
||||
private val initializer: PsiElement,
|
||||
private val project: Project) : CreateFieldRequest {
|
||||
override fun getTargetSubstitutor(): JvmSubstitutor = PsiJvmSubstitutor(project, PsiSubstitutor.EMPTY)
|
||||
|
||||
override fun getInitializer(): PsiElement = initializer
|
||||
|
||||
override fun getModifiers(): Collection<JvmModifier> = listOf(JvmModifier.PRIVATE, JvmModifier.STATIC)
|
||||
|
||||
override fun isConstant(): Boolean = true
|
||||
|
||||
override fun getFieldType(): List<ExpectedType> = expectedTypes(PsiType.LONG)
|
||||
|
||||
override fun getFieldName(): String = name
|
||||
|
||||
override fun isValid(): Boolean = true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user