mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-96016 Exception while moving java class referencing Groovy class with light constructor
This commit is contained in:
+20
-5
@@ -1377,11 +1377,11 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
String symbolName = HighlightMessageUtil.getSymbolName(refElement, result.getSubstitutor());
|
||||
|
||||
if (refElement.hasModifierProperty(PsiModifier.PRIVATE)) {
|
||||
String containerName = HighlightMessageUtil.getSymbolName(refElement.getParent(), result.getSubstitutor());
|
||||
String containerName = getContainerName(refElement, result.getSubstitutor());
|
||||
return JavaErrorMessages.message("private.symbol", symbolName, containerName);
|
||||
}
|
||||
else if (refElement.hasModifierProperty(PsiModifier.PROTECTED)) {
|
||||
String containerName = HighlightMessageUtil.getSymbolName(refElement.getParent(), result.getSubstitutor());
|
||||
String containerName = getContainerName(refElement, result.getSubstitutor());
|
||||
return JavaErrorMessages.message("protected.symbol", symbolName, containerName);
|
||||
}
|
||||
else {
|
||||
@@ -1391,17 +1391,32 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
symbolName = HighlightMessageUtil.getSymbolName(refElement, result.getSubstitutor());
|
||||
}
|
||||
if (refElement.hasModifierProperty(PsiModifier.PACKAGE_LOCAL) || packageLocalClass != null) {
|
||||
String containerName = HighlightMessageUtil.getSymbolName(refElement.getParent(), result.getSubstitutor());
|
||||
String containerName = getContainerName(refElement, result.getSubstitutor());
|
||||
return JavaErrorMessages.message("package.local.symbol", symbolName, containerName);
|
||||
}
|
||||
else {
|
||||
PsiElement symbol = refElement instanceof PsiTypeParameter ? refElement.getParent().getParent() : refElement.getParent();
|
||||
String containerName = symbol == null ? "?" : HighlightMessageUtil.getSymbolName(symbol, result.getSubstitutor());
|
||||
String containerName = getContainerName(refElement, result.getSubstitutor());
|
||||
return JavaErrorMessages.message("visibility.access.problem", symbolName, containerName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static PsiElement getContainer(PsiModifierListOwner refElement) {
|
||||
if (refElement instanceof PsiTypeParameter) return refElement.getParent().getParent();
|
||||
if (refElement instanceof PsiClass) {
|
||||
final PsiClass containingClass = ((PsiClass)refElement).getContainingClass();
|
||||
if (containingClass != null) return containingClass;
|
||||
return refElement.getContainingFile();
|
||||
}
|
||||
if (refElement instanceof PsiMember) return ((PsiMember)refElement).getContainingClass();
|
||||
return refElement.getParent();
|
||||
}
|
||||
|
||||
private static String getContainerName(PsiModifierListOwner refElement, final PsiSubstitutor substitutor) {
|
||||
final PsiElement container = getContainer(refElement);
|
||||
return container == null ? "?" : HighlightMessageUtil.getSymbolName(container, substitutor);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
static HighlightInfo checkValidArrayAccessExpression(@NotNull PsiArrayAccessExpression arrayAccessExpression) {
|
||||
final PsiExpression arrayExpression = arrayAccessExpression.getArrayExpression();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
public class GrDefFieldsArePrivateInJavaCode {
|
||||
public static void main(String[] args) {
|
||||
System.out.println(new X().<error descr="'x' has private access in 'null'">x</error>);
|
||||
System.out.println(new X().<error descr="'x' has private access in 'X'">x</error>);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user