From 6decb9742fa479a12518fd0a1215076d0783e9db Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Wed, 16 Sep 2015 15:03:29 +0300 Subject: [PATCH] Do not treat type parameter is @param section as tag - do not insert closing tag (IDEA-70898) --- .../editorActions/JavadocTypedHandler.java | 15 +++++---------- .../javadocTypedHandler/typeParam.java | 9 +++++++++ .../javadocTypedHandler/typeParam_after.java | 9 +++++++++ .../JavadocTypedHandlerFunctionalTest.java | 4 ++++ 4 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam.java create mode 100644 java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java index 9eeddd4cc2c0..514c5c3369f5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java @@ -24,13 +24,15 @@ import com.intellij.psi.*; import com.intellij.psi.impl.source.javadoc.PsiDocParamRef; import com.intellij.psi.impl.source.tree.JavaDocElementType; import com.intellij.psi.javadoc.PsiDocTag; -import com.intellij.psi.javadoc.PsiDocTagValue; import com.intellij.psi.javadoc.PsiInlineDocTag; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.text.CharArrayUtil; import com.intellij.xml.util.HtmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static com.intellij.util.text.CharArrayUtil.*; + /** * Advises typing in javadoc if necessary. * @@ -148,7 +150,7 @@ public class JavadocTypedHandler extends TypedHandlerDelegate { } PsiElement element = elementAtCaret; - while(element instanceof PsiWhiteSpace) { + while(element instanceof PsiWhiteSpace || element != null && containsOnlyWhiteSpaces(element.getText())) { element = element.getPrevSibling(); } @@ -161,16 +163,9 @@ public class JavadocTypedHandler extends TypedHandlerDelegate { } if (element instanceof PsiDocTag) { - // We don't want to provide closing tag for the type parameters, i.e. at situations like the one below: - // /** - // * @param [caret] - // */ PsiDocTag tag = (PsiDocTag)element; if ("param".equals(tag.getName())) { - final PsiDocTagValue value = tag.getValueElement(); - if (value == null || value.getTextRange().getEndOffset() == offset) { - return false; - } + return false; } } diff --git a/java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam.java b/java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam.java new file mode 100644 index 000000000000..17266c535738 --- /dev/null +++ b/java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam.java @@ -0,0 +1,9 @@ +class Q { + + /** + * @param + */ + public T get(T a) { + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam_after.java b/java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam_after.java new file mode 100644 index 000000000000..7e9d6951b673 --- /dev/null +++ b/java/java-tests/testData/codeInsight/editorActions/javadocTypedHandler/typeParam_after.java @@ -0,0 +1,9 @@ +class Q { + + /** + * @param + */ + public T get(T a) { + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerFunctionalTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerFunctionalTest.java index c46c24a702bb..1b0c92d867db 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerFunctionalTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerFunctionalTest.java @@ -31,6 +31,10 @@ public class JavadocTypedHandlerFunctionalTest extends LightPlatformCodeInsightT public void testCodeTag() { doTest(); } + + public void testTypeParam() { + doTest(); + } private void doTest() { String testName = getTestName(true);