mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
do not replace fqns in javadoc in package-info; do not shorten fqns on completion in javadoc inside package-info (IDEA-128445)
This commit is contained in:
+12
-8
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.TailType;
|
||||
import com.intellij.codeInsight.completion.scope.CompletionElement;
|
||||
import com.intellij.codeInsight.completion.scope.JavaCompletionProcessor;
|
||||
import com.intellij.codeInsight.editorActions.wordSelection.DocTagSelectioner;
|
||||
import com.intellij.codeInsight.javadoc.JavaDocUtil;
|
||||
import com.intellij.codeInsight.lookup.*;
|
||||
import com.intellij.codeInspection.InspectionProfile;
|
||||
import com.intellij.codeInspection.SuppressionUtil;
|
||||
@@ -391,16 +392,19 @@ public class JavaDocCompletionContributor extends CompletionContributor {
|
||||
private static void shortenReferences(final Project project, final Editor editor, InsertionContext context, int offset) {
|
||||
PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument());
|
||||
final PsiElement element = context.getFile().findElementAt(offset);
|
||||
final PsiDocTagValue tagValue = PsiTreeUtil.getParentOfType(element, PsiDocTagValue.class);
|
||||
if (tagValue != null) {
|
||||
try {
|
||||
JavaCodeStyleManager.getInstance(project).shortenClassReferences(tagValue);
|
||||
}
|
||||
catch (IncorrectOperationException e) {
|
||||
LOG.error(e);
|
||||
final PsiDocComment docComment = PsiTreeUtil.getParentOfType(element, PsiDocComment.class);
|
||||
if (!JavaDocUtil.isInsidePackageInfo(docComment)) {
|
||||
final PsiDocTagValue tagValue = PsiTreeUtil.getParentOfType(element, PsiDocTagValue.class);
|
||||
if (tagValue != null) {
|
||||
try {
|
||||
JavaCodeStyleManager.getInstance(project).shortenClassReferences(tagValue);
|
||||
}
|
||||
catch (IncorrectOperationException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments();
|
||||
}
|
||||
PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -363,4 +364,8 @@ public class JavaDocUtil {
|
||||
return list == null ? PsiClassType.EMPTY_ARRAY : list.getReferencedTypes();
|
||||
}
|
||||
|
||||
public static boolean isInsidePackageInfo(@Nullable PsiDocComment containingComment) {
|
||||
return containingComment != null && containingComment.getOwner() == null && containingComment.getParent() instanceof PsiJavaFile;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.psi.impl.source;
|
||||
|
||||
import com.intellij.codeInsight.javadoc.JavaDocUtil;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -162,7 +163,7 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
|
||||
i == JavaDocElementType.DOC_REFERENCE_HOLDER ||
|
||||
i == JavaDocElementType.DOC_TYPE_HOLDER) {
|
||||
PsiDocComment docComment = PsiTreeUtil.getParentOfType(this, PsiDocComment.class);
|
||||
if (docComment != null && docComment.getOwner() == null && docComment.getParent() instanceof PsiJavaFile) {
|
||||
if (JavaDocUtil.isInsidePackageInfo(docComment)) {
|
||||
return CLASS_FQ_OR_PACKAGE_NAME_KIND;
|
||||
}
|
||||
|
||||
|
||||
+14
@@ -229,6 +229,20 @@ class Foo {
|
||||
myFixture.assertPreferredCompletionItems 0, 'param', 'param param2'
|
||||
}
|
||||
|
||||
public void "test fqns in package info"() {
|
||||
myFixture.configureByText "package-info.java", '''
|
||||
/**
|
||||
* {@link java.util.Map#putA<caret>}
|
||||
*/
|
||||
'''
|
||||
myFixture.complete(CompletionType.BASIC)
|
||||
myFixture.checkResult '''
|
||||
/**
|
||||
* {@link java.util.Map#putAll(java.util.Map)}
|
||||
*/
|
||||
'''
|
||||
}
|
||||
|
||||
public void "test suggest same param descriptions"() {
|
||||
myFixture.configureByText "a.java", '''
|
||||
class Foo {
|
||||
|
||||
+13
-5
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.style;
|
||||
|
||||
import com.intellij.codeInsight.javadoc.JavaDocUtil;
|
||||
import com.intellij.codeInspection.CleanupLocalInspectionTool;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -205,11 +206,8 @@ public class UnnecessaryFullyQualifiedNameInspection extends BaseInspection impl
|
||||
return;
|
||||
}
|
||||
final CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(reference.getProject());
|
||||
if (styleSettings.USE_FQ_CLASS_NAMES_IN_JAVADOC) {
|
||||
final PsiElement containingComment = PsiTreeUtil.getParentOfType(reference, PsiDocComment.class);
|
||||
if (containingComment != null) {
|
||||
return;
|
||||
}
|
||||
if (acceptFullyQualifiedNamesInJavadoc(reference, styleSettings)) {
|
||||
return;
|
||||
}
|
||||
final PsiFile containingFile = reference.getContainingFile();
|
||||
if (!(containingFile instanceof PsiJavaFile)) {
|
||||
@@ -261,4 +259,14 @@ public class UnnecessaryFullyQualifiedNameInspection extends BaseInspection impl
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean acceptFullyQualifiedNamesInJavadoc(PsiJavaCodeReferenceElement reference, CodeStyleSettings styleSettings) {
|
||||
final PsiDocComment containingComment = PsiTreeUtil.getParentOfType(reference, PsiDocComment.class);
|
||||
if (containingComment != null) {
|
||||
if (styleSettings.USE_FQ_CLASS_NAMES_IN_JAVADOC || JavaDocUtil.isInsidePackageInfo(containingComment)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
/**
|
||||
* {@link java.util.Map(java.util.function.BiConsumer)}
|
||||
*/
|
||||
+13
-2
@@ -1,11 +1,22 @@
|
||||
package com.siyeh.ig.style;
|
||||
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.siyeh.ig.IGInspectionTestCase;
|
||||
|
||||
public class UnnecessaryFullyQualifiedNameInspectionTest extends IGInspectionTestCase {
|
||||
|
||||
public void test() throws Exception {
|
||||
doTest("com/siyeh/igtest/style/unnecessary_fully_qualified_name",
|
||||
new UnnecessaryFullyQualifiedNameInspection());
|
||||
final CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(getProject());
|
||||
|
||||
boolean inJavadoc = styleSettings.USE_FQ_CLASS_NAMES_IN_JAVADOC;
|
||||
try {
|
||||
styleSettings.USE_FQ_CLASS_NAMES_IN_JAVADOC = false;
|
||||
doTest("com/siyeh/igtest/style/unnecessary_fully_qualified_name",
|
||||
new UnnecessaryFullyQualifiedNameInspection());
|
||||
}
|
||||
finally {
|
||||
styleSettings.USE_FQ_CLASS_NAMES_IN_JAVADOC = inJavadoc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -21,6 +21,7 @@ import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.siyeh.ig.psiutils.ImportUtils;
|
||||
import com.siyeh.ig.style.UnnecessaryFullyQualifiedNameInspection;
|
||||
import com.siyeh.ipp.base.PsiElementPredicate;
|
||||
|
||||
class FullyQualifiedNamePredicate implements PsiElementPredicate {
|
||||
@@ -40,6 +41,11 @@ class FullyQualifiedNamePredicate implements PsiElementPredicate {
|
||||
if (PsiTreeUtil.getParentOfType(element, PsiImportStatementBase.class, PsiPackageStatement.class, JavaCodeFragment.class) != null) {
|
||||
return false;
|
||||
}
|
||||
final Project project = element.getProject();
|
||||
final CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(project);
|
||||
if (UnnecessaryFullyQualifiedNameInspection.acceptFullyQualifiedNamesInJavadoc(referenceElement, codeStyleSettings)) {
|
||||
return false;
|
||||
}
|
||||
final PsiElement qualifier = referenceElement.getQualifier();
|
||||
if (!(qualifier instanceof PsiJavaCodeReferenceElement)) {
|
||||
return false;
|
||||
@@ -50,8 +56,6 @@ class FullyQualifiedNamePredicate implements PsiElementPredicate {
|
||||
if (!(resolved instanceof PsiClass)) {
|
||||
return false;
|
||||
}
|
||||
final Project project = element.getProject();
|
||||
final CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(project);
|
||||
if (!codeStyleSettings.INSERT_INNER_CLASS_IMPORTS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user