mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
only suggest to create dynamic methods when there are argument types available (EA-29809)
low priority create dynamic method/property intentions
This commit is contained in:
@@ -1444,7 +1444,10 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator {
|
||||
}
|
||||
|
||||
if (QuickfixUtil.isCall(referenceExpression)) {
|
||||
annotation.registerFix(new DynamicMethodFix(referenceExpression), referenceExpression.getTextRange());
|
||||
PsiType[] argumentTypes = PsiUtil.getArgumentTypes(referenceExpression, false);
|
||||
if (argumentTypes != null) {
|
||||
annotation.registerFix(new DynamicMethodFix(referenceExpression, argumentTypes), referenceExpression.getTextRange());
|
||||
}
|
||||
}
|
||||
else {
|
||||
annotation.registerFix(new DynamicPropertyFix(referenceExpression), referenceExpression.getTextRange());
|
||||
|
||||
+7
-7
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.plugins.groovy.annotator.intentions.dynamic;
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.codeInsight.intention.LowPriorityAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
@@ -28,27 +29,26 @@ import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ui.DynamicDialo
|
||||
import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ui.DynamicElementSettings;
|
||||
import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.ui.DynamicMethodDialog;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
|
||||
/**
|
||||
* @author Maxim.Medvedev
|
||||
*/
|
||||
public class DynamicMethodFix implements IntentionAction {
|
||||
public class DynamicMethodFix implements IntentionAction, LowPriorityAction {
|
||||
private final GrReferenceExpression myReferenceExpression;
|
||||
private final PsiType[] myMethodArgumentsTypes;
|
||||
|
||||
public DynamicMethodFix(GrReferenceExpression referenceExpression) {
|
||||
public DynamicMethodFix(GrReferenceExpression referenceExpression, final PsiType[] argumentTypes) {
|
||||
myReferenceExpression = referenceExpression;
|
||||
myMethodArgumentsTypes = argumentTypes;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getText() {
|
||||
final PsiType[] methodArgumentsTypes = PsiUtil.getArgumentTypes(myReferenceExpression, false);
|
||||
StringBuilder builder = new StringBuilder(" '").append(myReferenceExpression.getName());
|
||||
builder.append("(");
|
||||
|
||||
assert methodArgumentsTypes != null;
|
||||
for (int i = 0; i < methodArgumentsTypes.length; i++) {
|
||||
PsiType type = methodArgumentsTypes[i];
|
||||
for (int i = 0; i < myMethodArgumentsTypes.length; i++) {
|
||||
PsiType type = myMethodArgumentsTypes[i];
|
||||
|
||||
if (i > 0) {
|
||||
builder.append(", ");
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.plugins.groovy.annotator.intentions.dynamic;
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.codeInsight.intention.LowPriorityAction;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -36,7 +37,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrRefere
|
||||
/**
|
||||
* @author Maxim.Medvedev
|
||||
*/
|
||||
public class DynamicPropertyFix extends GroovyFix implements IntentionAction {
|
||||
public class DynamicPropertyFix extends GroovyFix implements IntentionAction, LowPriorityAction {
|
||||
private final GrReferenceExpression myReferenceExpression;
|
||||
private final GrArgumentLabel myArgumentLabel;
|
||||
private final PsiClass myTargetClass;
|
||||
|
||||
Reference in New Issue
Block a user