mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-190393 When external annotations are enabled, the action works on local variable, but does nothing
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user