IJ-CR-145483 [java-highlighting] IDEA-359527 Class 'MyRecord' must implement abstract method 'value()' in 'MyInterface' in implicit class

- use `getContextOfType`

GitOrigin-RevId: 0f0c943c04e2e9c17dd0f66b884ff8f3a16ba455
This commit is contained in:
Mikhail Pyltsin
2024-09-25 17:11:30 +00:00
committed by intellij-monorepo-bot
parent e482d582cb
commit 8cccdff168
@@ -144,11 +144,11 @@ public class PsiResolveHelperImpl implements PsiResolveHelper {
* @return true if the member is not from an implicit class or if place and member are both in the same implicit class, false otherwise.
*/
private static boolean fromImplicitClassOutsideThisClass(@NotNull PsiMember member, @NotNull PsiElement place) {
PsiImplicitClass implicitClass = getImplicitClass(member);
PsiImplicitClass implicitClass = PsiTreeUtil.getContextOfType(member, PsiImplicitClass.class);
if (implicitClass == null) {
return false;
}
PsiImplicitClass placeImplicitClass = getImplicitClass(place);
PsiImplicitClass placeImplicitClass = PsiTreeUtil.getContextOfType(place, PsiImplicitClass.class);
if (placeImplicitClass == null) {
return true;
}
@@ -156,26 +156,6 @@ public class PsiResolveHelperImpl implements PsiResolveHelper {
return !member.getManager().areElementsEquivalent(implicitClass, placeImplicitClass);
}
private static @Nullable PsiImplicitClass getImplicitClass(@NotNull PsiElement psiElement) {
PsiImplicitClass implicitClass = PsiTreeUtil.getParentOfType(psiElement, PsiImplicitClass.class);
if (implicitClass != null) {
return implicitClass;
}
//it can be a light member that doesn't have parents, but let's try with a containing file
PsiFile containingFile = psiElement.getContainingFile();
if (!(containingFile instanceof PsiJavaFile)) {
return null;
}
PsiClass[] classes = ((PsiJavaFile)containingFile).getClasses();
if(classes.length != 1) {
return null;
}
if(!(classes[0] instanceof PsiImplicitClass)) {
return null;
}
return (PsiImplicitClass)classes[0];
}
@Override
public boolean isAccessible(@NotNull PsiPackage pkg, @NotNull PsiElement place) {
return isAccessible(moduleSystem -> moduleSystem.isAccessible(pkg.getQualifiedName(), null, place));