disable fixes when target types depend on unresolved type params (IDEA-185967)

This commit is contained in:
Anna Kozlova
2018-02-01 13:40:04 +03:00
parent d56a45311d
commit 30464d6b08
3 changed files with 17 additions and 1 deletions
@@ -59,6 +59,7 @@ public class AddTypeCastFix extends LocalQuickFixAndIntentionActionOnPsiElement
@NotNull PsiElement endElement) {
return myType.isValid() &&
PsiTypesUtil.isDenotableType(myType) &&
PsiTypesUtil.allTypeParametersResolved(startElement, myType) &&
startElement.getManager().isInProject(startElement);
}
@@ -21,6 +21,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTypesUtil;
import org.jetbrains.annotations.NotNull;
/**
@@ -43,7 +44,7 @@ public abstract class MethodArgumentFix implements IntentionAction {
@Override
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
if (myToType != null && myToType.isValid()) {
if (myToType != null && myToType.isValid() && PsiTypesUtil.allTypeParametersResolved(myArgList, myToType)) {
PsiExpression[] args = myArgList.getExpressions();
return args.length > myIndex && args[myIndex] != null && args[myIndex].isValid();
}
@@ -0,0 +1,14 @@
// "Cast parameter to 'M'" "false"
class a {
void doSomething(String[] data) {}
void test() {
doSomething(Li<caret>st.of(""));
}
interface List<L> {
static <M> List<M> of(M... ms) {
return null;
}
}
}