mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] store expression in parameter cast fix since it's already known, no need to find it in argument list by index
GitOrigin-RevId: e45122d83c08c48e288016f4783c28041366d861
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3f557092b6
commit
76bf5f5eb0
+3
-1
@@ -8,6 +8,7 @@ import com.intellij.psi.SmartPointerManager;
|
||||
import com.intellij.psi.SmartPsiElementPointer;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.GroovyFix;
|
||||
@@ -68,7 +69,8 @@ public class GrCastFix extends GroovyFix {
|
||||
JavaCodeStyleManager.getInstance(project).shortenClassReferences(replaced);
|
||||
}
|
||||
|
||||
static void doSafeCast(@NotNull Project project, @NotNull PsiType type, @NotNull GrExpression expr) {
|
||||
@ApiStatus.Internal
|
||||
public static void doSafeCast(@NotNull Project project, @NotNull PsiType type, @NotNull GrExpression expr) {
|
||||
if (!type.isValid()) return;
|
||||
|
||||
final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(project);
|
||||
|
||||
+7
-7
@@ -1,9 +1,9 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.plugins.groovy.codeInspection.type.highlighting
|
||||
|
||||
import com.intellij.codeInspection.LocalQuickFix
|
||||
import com.intellij.psi.PsiType
|
||||
import org.jetbrains.plugins.groovy.GroovyBundle
|
||||
import org.jetbrains.plugins.groovy.codeInspection.assignment.ParameterCastFix
|
||||
import org.jetbrains.plugins.groovy.highlighting.HighlightSink
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyMethodResult
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgumentList
|
||||
@@ -28,13 +28,13 @@ abstract class ConstructorCallHighlighter(reference: GroovyCallReference, sink:
|
||||
}
|
||||
}
|
||||
|
||||
override fun buildCastFix(argument: ExpressionArgument, expectedType: PsiType): ParameterCastFix? {
|
||||
override fun buildCastFix(argument: ExpressionArgument, expectedType: PsiType): LocalQuickFix? {
|
||||
val arguments = reference.arguments ?: return null
|
||||
val list = argumentList ?: return null
|
||||
if (argument !in arguments) return null
|
||||
|
||||
val position = list.getExpressionArgumentIndex(argument.expression)
|
||||
return ParameterCastFix(position, expectedType)
|
||||
val position = arguments.indexOf(argument)
|
||||
if (position < 0) {
|
||||
return null
|
||||
}
|
||||
return ParameterCastFix(argument.expression, position, expectedType)
|
||||
}
|
||||
|
||||
fun highlight(): Boolean = highlightMethodApplicability()
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.plugins.groovy.codeInspection.type.highlighting
|
||||
|
||||
import com.intellij.codeInspection.ProblemDescriptor
|
||||
import com.intellij.model.Pointer
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiType
|
||||
import com.intellij.psi.util.createSmartPointer
|
||||
import org.jetbrains.plugins.groovy.GroovyBundle
|
||||
import org.jetbrains.plugins.groovy.codeInspection.GroovyFix
|
||||
import org.jetbrains.plugins.groovy.codeInspection.assignment.GrCastFix
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression
|
||||
|
||||
class ParameterCastFix(
|
||||
expression: GrExpression,
|
||||
position: Int,
|
||||
private val myType: PsiType
|
||||
) : GroovyFix() {
|
||||
|
||||
private val myName: String = GroovyBundle.message("parameter.cast.fix", position + 1, myType.presentableText)
|
||||
override fun getName(): String = myName
|
||||
override fun getFamilyName(): String = "Add parameter cast"
|
||||
|
||||
private val myExpression: Pointer<GrExpression> = expression.createSmartPointer()
|
||||
|
||||
override fun doFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
val expression = myExpression.dereference() ?: return
|
||||
GrCastFix.doSafeCast(project, myType, expression)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user