diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java index 9a6438c..21c2b84 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java @@ -61,6 +61,10 @@ public class JavaLangDoc extends BaseTagLangDoc { try { @Nullable PsiMethod resolve = psiNewExpression.resolveMethod(); if (resolve != null) { + PsiElement navElement = resolve.getNavigationElement(); + if (navElement instanceof PsiMethod) { + resolve = (PsiMethod) navElement; + } return resolveDocPrint(info, resolve); } } catch (Throwable ignore) { diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java index 86832e9..f5507ae 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java @@ -14,23 +14,12 @@ public class PsiMethodToPsiDoc { @Nullable static PsiDocComment methodSupperNewPropDoc(@NotNull PsiMethod psiMethod) { - // .class - @Nullable PsiElement navElement; - try { - navElement = psiMethod.getNavigationElement(); - } catch (Exception e) { - return null; - } - if (navElement instanceof PsiMethod) { - psiMethod = (PsiMethod) navElement; - } - @Nullable PsiDocComment docComment = psiMethod.getDocComment(); if (docComment != null) { return docComment; } - // supper + // supper recursion @Nullable PsiDocComment superDoc = supperMethodDoc(psiMethod); if (superDoc != null) { return superDoc; @@ -60,7 +49,17 @@ public class PsiMethodToPsiDoc { return null; } for (@NotNull PsiMethod superMethod : superMethods) { - @Nullable PsiDocComment superDoc = OwnerToPsiDocUtils.methodDoc(superMethod); + // .class + @Nullable PsiElement navElement; + try { + navElement = superMethod.getNavigationElement(); + } catch (Exception e) { + return null; + } + if (navElement instanceof PsiMethod) { + superMethod = (PsiMethod) navElement; + } + @Nullable PsiDocComment superDoc = OwnerToPsiDocUtils.methodSupperNewPropDoc(superMethod); if (superDoc != null) { return superDoc; } diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java index 4dbd771..6938479 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java @@ -28,6 +28,14 @@ public class NewCallRefToPsiDoc { // ignore } if (resolve instanceof PsiDocCommentOwner) { + try { + PsiElement navElement = resolve.getNavigationElement(); + if (navElement instanceof PsiDocCommentOwner) { + resolve = navElement; + } + } catch (Throwable ignore) { + // ignore + } return OwnerToPsiDocSkip.refDoc(info, ((PsiDocCommentOwner) resolve)); } return null; diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java index 9743139..b010012 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java @@ -176,6 +176,15 @@ public abstract class BaseLangDoc extends EditorLinePainter { public static @Nullable String resolveDoc(@NotNull T info, @NotNull PsiElement psiElement) { + try { + // byte to src + PsiElement navElement = psiElement.getNavigationElement(); + if (navElement != null) { + psiElement = navElement; + } + } catch (Throwable ignore) { + // ignore + } // support like java <-> kotlin @NotNull Language language = PsiElementTo.language(psiElement); BaseLangDoc lineEnd = LANG_DOC_MAP.get(language.getID());