From 9176f9b87486812a8f1a67254a7575f8afcd71bc Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 20 Apr 2017 12:52:03 +0300 Subject: [PATCH] IDEA-170735 CTRL+MouseOver popup over inner class does not show outer class --- .../lang/java/JavaDocumentationProvider.java | 12 +++---- .../codeInsight/JavaDocumentationTest.groovy | 4 +-- .../navigation/DocPreviewUtil.java | 9 ++---- .../navigation/DocPreviewUtilTest.groovy | 32 ++++--------------- 4 files changed, 17 insertions(+), 40 deletions(-) diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index b21954ba6088..4f172ea20ec2 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -236,7 +236,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement private static void writeTypeRefs(PsiClass aClass, StringBuilder buffer, PsiClassType[] refs) { for (int i = 0; i < refs.length; i++) { - JavaDocInfoGenerator.generateType(buffer, refs[i], aClass, false); + JavaDocInfoGenerator.generateType(buffer, refs[i], aClass, false, true); if (i < refs.length - 1) { buffer.append(", "); @@ -260,7 +260,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement buffer.append(" extends "); for (int j = 0; j < refs.length; j++) { - JavaDocInfoGenerator.generateType(buffer, refs[j], typeParameterOwner, false); + JavaDocInfoGenerator.generateType(buffer, refs[j], typeParameterOwner, false, true); if (j < refs.length - 1) { buffer.append(" & "); @@ -297,7 +297,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement generateTypeParameters(method, buffer); if (method.getReturnType() != null) { - JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(method.getReturnType()), method, false); + JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(method.getReturnType()), method, false, true); buffer.append(" "); } @@ -307,7 +307,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement PsiParameter[] params = method.getParameterList().getParameters(); for (int i = 0; i < params.length; i++) { PsiParameter param = params[i]; - JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(param.getType()), method, false); + JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(param.getType()), method, false, true); buffer.append(" "); if (param.getName() != null) { buffer.append(param.getName()); @@ -353,7 +353,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement generateModifiers(buffer, field); - JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(field.getType()), field, false); + JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(field.getType()), field, false, true); buffer.append(" "); buffer.append(field.getName()); @@ -368,7 +368,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement generateModifiers(buffer, variable); - JavaDocInfoGenerator.generateType(buffer, variable.getType(), variable, false); + JavaDocInfoGenerator.generateType(buffer, variable.getType(), variable, false, true); buffer.append(" "); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy index 9d0002dd8a03..8ad6792cbfc5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/JavaDocumentationTest.groovy @@ -116,7 +116,7 @@ class JavaDocumentationTest extends LightCodeInsightFixtureTestCase { def ref = myFixture.file.findReferenceAt(myFixture.editor.caretModel.offset) def doc = CtrlMouseHandler.getInfo(ref.resolve(), ref.element) - assert doc == "Bar\n java.util.List<java.lang.String> foo(java.lang.String param)" + assert doc == "Bar\n List<String> foo(String param)" } void testGenericField() { @@ -130,7 +130,7 @@ class JavaDocumentationTest extends LightCodeInsightFixtureTestCase { def ref = myFixture.file.findReferenceAt(myFixture.editor.caretModel.offset) def doc = CtrlMouseHandler.getInfo(ref.resolve(), ref.element) - assert doc == "Bar\n java.lang.Integer field" + assert doc == "Bar\n Integer field" } void testMethodInAnonymousClass() { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java index 94f03e849e0b..41af1721831b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -136,12 +136,7 @@ public class DocPreviewUtil { StringBuilder buffer = new StringBuilder(header); replace(buffer, "\n", "
", modifiedRanges); for (String replaceFrom : sortedReplacements) { - String visibleName = replaceFrom; - int i = visibleName.lastIndexOf('.'); - if (i > 0 && i < visibleName.length() - 1) { - visibleName = visibleName.substring(i + 1); - } - replace(buffer, replaceFrom, String.format("%s", links.get(replaceFrom), visibleName), modifiedRanges); + replace(buffer, replaceFrom, String.format("%s", links.get(replaceFrom), replaceFrom), modifiedRanges); } return buffer.toString(); } diff --git a/platform/lang-impl/testSources/com/intellij/codeInsight/navigation/DocPreviewUtilTest.groovy b/platform/lang-impl/testSources/com/intellij/codeInsight/navigation/DocPreviewUtilTest.groovy index 34592ecfd0cb..d2d45722dcf9 100644 --- a/platform/lang-impl/testSources/com/intellij/codeInsight/navigation/DocPreviewUtilTest.groovy +++ b/platform/lang-impl/testSources/com/intellij/codeInsight/navigation/DocPreviewUtilTest.groovy @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,8 +32,8 @@ class DocPreviewUtilTest { def header = '''\ [< 1.7 >] java.lang - public final class java.lang.String extends Object - implements java.io.Serializable, java.lang.Comparable<java.lang.String>, java.lang.CharSequence\ + public final class String extends Object + implements Serializable, Comparable<String>, CharSequence\ ''' def fullText = '''\ @@ -111,29 +111,11 @@ java.lang
public final class Strin assertTrue(actual.endsWith(expected)) // Can't check for equals() because jdk name might differ on different machines. } - @Test - void fieldTypeSubstitution() { - def header = '''\ -Bar - java.util.List<java.lang.String> foo (java.lang.String param)\ -''' - - def fullText = '''\ - Bar
java.util.List<T> foo(T param)
\ -''' - - def expected = '''\ -Bar
List<String> foo (String param)\ -''' - def actual = DocPreviewUtil.buildPreview(header, "java.lang.String", fullText) - assertEquals(expected, actual) - } - @Test void crossingLinks() { def header = '''\ OCCompletionPriority -com.jetbrains.objc.lang.completion.OCCompletionPriority SMART_COMPLETION_PRIORITY''' +OCCompletionPriority SMART_COMPLETION_PRIORITY''' def fullText = '''\ com.jetbrains.objc.lang.completion.OCCompletionPriority
OCCompletionPriority SMART_COMPLETION_PRIORITY
@@ -150,7 +132,7 @@ Qname''' void tailSubstrings() { def header = '''\ PsiResolveHelperImpl -public static com.intellij.openapi.util.Pair<com.intellij.psi.PsiType, com.intellij.psi.ConstraintType> getSubstitutionForTypeParameterConstraint (com.intellij.psi.PsiTypeParameter typeParam, com.intellij.psi.PsiType param, com.intellij.psi.PsiType arg, boolean isContraVariantPosition, com.intellij.pom.java.LanguageLevel languageLevel)''' +public static Pair<PsiType, ConstraintType> getSubstitutionForTypeParameterConstraint (PsiTypeParameter typeParam, PsiType param, PsiType arg, boolean isContraVariantPosition, LanguageLevel languageLevel)''' def fullText = '''\ com.intellij.psi.impl.source.resolve.PsiResolveHelperImpl
@Nullable public static Pair<PsiType, ConstraintType> getSubstitutionForTypeParameterConstraint(PsiTypeParameter typeParam,
@@ -169,7 +151,7 @@ public static com.intellij.openapi.util.Pair<com.intellij.psi.PsiType, com.in
   void headSubstrings() {
     def header = '''\
 ASTNode
-com.intellij.openapi.util.TextRange getTextRange ()'''
+TextRange getTextRange ()'''
     
     def fullText = '''\
     com.intellij.lang.ASTNode
TextRange getTextRange()
@@ -187,7 +169,7 @@ com.intellij.openapi.util.TextRange getTextRange ()''' void "single letter 'from' substitution"() { def header = '''\ E -org.denis.E A +E A Enum constant ordinal: 0''' def fullText = '''\