mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
format method according to javadoc rules (IDEA-69744 ) [roma]
(cherry picked from commit df32e7ef7079f182fefb2135b9213eed4df575c9)
This commit is contained in:
@@ -578,9 +578,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
|
||||
if (classUrls != null) {
|
||||
urls = new ArrayList<String>();
|
||||
String signature = PsiFormatUtil.formatMethod(method, PsiSubstitutor.EMPTY,
|
||||
PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS | PsiFormatUtil.SHOW_RAW_NON_TOP_TYPE,
|
||||
PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_FQ_CLASS_NAMES | PsiFormatUtil.SHOW_RAW_NON_TOP_TYPE, 999);
|
||||
String signature = formatMethodSignature(method);
|
||||
for (String classUrl : classUrls) {
|
||||
urls.add(classUrl + "#" + signature);
|
||||
}
|
||||
@@ -614,6 +612,13 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
}
|
||||
}
|
||||
|
||||
public static String formatMethodSignature(PsiMethod method) {
|
||||
return PsiFormatUtil.formatMethod(method, PsiSubstitutor.EMPTY,
|
||||
PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS | PsiFormatUtil.SHOW_RAW_NON_TOP_TYPE,
|
||||
PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_FQ_CLASS_NAMES | PsiFormatUtil.SHOW_RAW_NON_TOP_TYPE,
|
||||
999);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static List<String> findUrlForClass(PsiClass aClass) {
|
||||
String qName = aClass.getQualifiedName();
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2000-2011 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.codeInsight;
|
||||
|
||||
import com.intellij.lang.java.JavaDocumentationProvider;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
* Date: 11/27/11
|
||||
*/
|
||||
public class ExternalJavadocUrlsTest extends LightCodeInsightFixtureTestCase {
|
||||
private void doTest(String text, String... expectedSignature) {
|
||||
myFixture.configureByText("Test.java", text);
|
||||
final PsiElement elementAtCaret = myFixture.getElementAtCaret();
|
||||
final PsiMethod member = PsiTreeUtil.getParentOfType(elementAtCaret, PsiMethod.class, false);
|
||||
assertNotNull(member);
|
||||
final String signature = JavaDocumentationProvider.formatMethodSignature(member);
|
||||
assertNotNull(signature);
|
||||
assertEquals("found:" + signature, expectedSignature[0], signature);
|
||||
}
|
||||
|
||||
public void testVarargs() {
|
||||
doTest("class Test {\n" +
|
||||
" void fo<caret>o(Class<?>... cl){}\n" +
|
||||
"}", "foo(java.lang.Class...)");
|
||||
|
||||
}
|
||||
|
||||
public void testTypeParams() {
|
||||
doTest("class Test {\n" +
|
||||
" <T> void so<caret>rt(T[] a, Comparator<? super T> c) {}\n" +
|
||||
"}\n" +
|
||||
" class Comparator<X>{}", "sort(T[], Comparator)");
|
||||
}
|
||||
}
|
||||
@@ -346,7 +346,11 @@ public class PsiFormatUtil extends PsiFormatUtilBase {
|
||||
type = TypeConversionUtil.erasure(type);
|
||||
} else if ((options & SHOW_RAW_NON_TOP_TYPE) != 0) {
|
||||
if (!(PsiUtil.resolveClassInType(type) instanceof PsiTypeParameter)) {
|
||||
final boolean preserveEllipsis = type instanceof PsiEllipsisType;
|
||||
type = TypeConversionUtil.erasure(type);
|
||||
if (preserveEllipsis && type instanceof PsiArrayType) {
|
||||
type = new PsiEllipsisType(((PsiArrayType)type).getComponentType());
|
||||
}
|
||||
}
|
||||
}
|
||||
return (options & SHOW_FQ_CLASS_NAMES) == 0 ? type.getPresentableText() : type.getInternalCanonicalText();
|
||||
|
||||
Reference in New Issue
Block a user