PsiTypeParameterImpl doesn't have modifier list, so ignore it to fix EA-92866 - assert: AddAnnotationPsiFix.invoke

This commit is contained in:
Alexey Kudravtsev
2017-03-27 13:40:02 +03:00
parent 71853af14c
commit 5e2cf90076
@@ -23,7 +23,6 @@ import com.intellij.lang.findUsages.FindUsagesProvider;
import com.intellij.lang.findUsages.LanguageFindUsages;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.command.undo.UndoUtil;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
@@ -34,7 +33,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement {
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.intention.AddAnnotationPsiFix");
protected final String myAnnotation;
private final String[] myAnnotationsToRemove;
private final PsiNameValuePair[] myPairs; // not used when registering local quick fix
@@ -112,7 +110,9 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement {
if (!PsiUtil.isLanguageLevel5OrHigher(startElement)) return false;
final PsiModifierListOwner myModifierListOwner = (PsiModifierListOwner)startElement;
return !AnnotationUtil.isAnnotated(myModifierListOwner, myAnnotation, false, false);
// e.g. PsiTypeParameterImpl doesn't have modifier list
return myModifierListOwner.getModifierList() != null
&& !AnnotationUtil.isAnnotated(myModifierListOwner, myAnnotation, false, false);
}
@Override
@@ -129,8 +129,7 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement {
final ExternalAnnotationsManager annotationsManager = ExternalAnnotationsManager.getInstance(project);
final PsiModifierList modifierList = myModifierListOwner.getModifierList();
LOG.assertTrue(modifierList != null, myModifierListOwner + " ("+myModifierListOwner.getClass()+")");
if (modifierList.findAnnotation(myAnnotation) != null) return;
if (modifierList == null || modifierList.findAnnotation(myAnnotation) != null) return;
final ExternalAnnotationsManager.AnnotationPlace annotationAnnotationPlace = annotationsManager.chooseAnnotationsPlace(myModifierListOwner);
if (annotationAnnotationPlace == ExternalAnnotationsManager.AnnotationPlace.NOWHERE) return;
if (annotationAnnotationPlace == ExternalAnnotationsManager.AnnotationPlace.EXTERNAL) {
@@ -175,7 +174,7 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement {
}
@NotNull
public String[] getAnnotationsToRemove() {
protected String[] getAnnotationsToRemove() {
return myAnnotationsToRemove;
}
}