From 9c04fe7df3456f8502b01a5deeed58aa3944114b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 23 Apr 2014 20:04:57 +0200 Subject: [PATCH] Ctrl-Q: process java 8 signature style as 1.8 javadoc could also be run on sources 1.6 (IDEA-124175) --- .../lang/java/JavaDocumentationProvider.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 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 6a267f692ab0..56f376ffbf06 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -34,7 +34,6 @@ import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; -import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -56,8 +55,10 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * @author Maxim.Mossienko @@ -591,13 +592,16 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext if (classUrls != null) { urls = ContainerUtil.newSmartList(); - String rawSignature = formatMethodSignature(method, true); - for (String classUrl : classUrls) { - urls.add(classUrl + "#" + rawSignature); - } + final boolean useJava8Format = PsiUtil.isLanguageLevel8OrHigher(method); - String signature = formatMethodSignature(method, false); - if (Comparing.compare(rawSignature, signature) != 0) { + final Set signatures = new LinkedHashSet(); + signatures.add(formatMethodSignature(method, true, useJava8Format)); + signatures.add(formatMethodSignature(method, false, useJava8Format)); + + signatures.add(formatMethodSignature(method, true, !useJava8Format)); + signatures.add(formatMethodSignature(method, false, !useJava8Format)); + + for (String signature : signatures) { for (String classUrl : classUrls) { urls.add(classUrl + "#" + signature); } @@ -626,7 +630,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext } } - private static String formatMethodSignature(PsiMethod method, boolean raw) { + private static String formatMethodSignature(PsiMethod method, boolean raw, boolean java8Format) { int options = PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS; int parameterOptions = PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.SHOW_FQ_CLASS_NAMES; if (raw) { @@ -636,7 +640,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext String signature = PsiFormatUtil.formatMethod(method, PsiSubstitutor.EMPTY, options, parameterOptions, 999); - if (PsiUtil.isLanguageLevel8OrHigher(method)) { + if (java8Format) { signature = signature.replaceAll("\\(|\\)|, ", "-").replaceAll("\\[\\]", ":A"); }