diff --git a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java index 230f54bf99bd..416fc4299113 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsManagerImpl.java @@ -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; } diff --git a/java/java-impl/src/com/intellij/codeInsight/MakeAnnotationExternal.java b/java/java-impl/src/com/intellij/codeInsight/MakeAnnotationExternal.java index 1eba98b7d5d6..2a0f55dd764d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/MakeAnnotationExternal.java +++ b/java/java-impl/src/com/intellij/codeInsight/MakeAnnotationExternal.java @@ -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