IDEA-190393 When external annotations are enabled, the action works on local variable, but does nothing

This commit is contained in:
Tagir Valeev
2018-04-17 14:14:44 +07:00
parent f3ae35ae1a
commit 000f124c33
2 changed files with 8 additions and 5 deletions
@@ -202,7 +202,6 @@ public class ExternalAnnotationsManagerImpl extends ReadableExternalAnnotationsM
}
annotateExternally(listOwner, annotationFQName, annotationsXml, fromFile, value, externalName);
}
;
});
return true;
}
@@ -681,7 +680,7 @@ public class ExternalAnnotationsManagerImpl extends ReadableExternalAnnotationsM
@Nullable
@VisibleForTesting
public static XmlFile createAnnotationsXml(@NotNull VirtualFile root, @NonNls @NotNull String packageName, PsiManager manager) {
final String[] dirs = packageName.split("[\\.]");
final String[] dirs = packageName.split("\\.");
for (String dir : dirs) {
if (dir.isEmpty()) break;
VirtualFile subdir = root.findChild(dir);
@@ -734,6 +733,11 @@ public class ExternalAnnotationsManagerImpl extends ReadableExternalAnnotationsM
public static boolean areExternalAnnotationsApplicable(@NotNull PsiModifierListOwner owner) {
if (!owner.isPhysical()) return false;
if (owner instanceof PsiLocalVariable) return false;
if (owner instanceof PsiParameter) {
PsiElement parent = owner.getParent();
if (parent == null || !(parent.getParent() instanceof PsiMethod)) return false;
}
if (!owner.getManager().isInProject(owner)) return true;
return JavaCodeStyleSettings.getInstance(owner.getContainingFile()).USE_EXTERNAL_ANNOTATIONS;
}
@@ -24,7 +24,6 @@ import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiModifierListOwner;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtilCore;
@@ -48,7 +47,7 @@ public class MakeAnnotationExternal extends BaseIntentionAction {
if (annotation != null && annotation.getQualifiedName() != null &&
annotation.getManager().isInProject(annotation)) {
PsiModifierListOwner modifierListOwner = PsiTreeUtil.getParentOfType(annotation, PsiModifierListOwner.class);
if (modifierListOwner != null) {
if (modifierListOwner != null && ExternalAnnotationsManagerImpl.areExternalAnnotationsApplicable(modifierListOwner)) {
VirtualFile virtualFile = PsiUtilCore.getVirtualFile(modifierListOwner);
if (JavaCodeStyleSettings.getInstance(file).USE_EXTERNAL_ANNOTATIONS ||
virtualFile != null && ExternalAnnotationsManager.getInstance(project).hasAnnotationRootsForFile(virtualFile)) {
@@ -82,7 +81,7 @@ public class MakeAnnotationExternal extends BaseIntentionAction {
return;
}
WriteAction.run(() -> annotation.delete());
WriteAction.run(annotation::delete);
}
@Override