docURLs) {
StringBuilder buffer = new StringBuilder();
+
if (myElement instanceof PsiClass) {
generateClassJavaDoc(buffer, (PsiClass)myElement);
}
@@ -545,6 +547,8 @@ public class JavaDocInfoGenerator {
private static void appendInitializer(StringBuilder buffer, PsiVariable variable) {
PsiExpression initializer = variable.getInitializer();
if (initializer != null) {
+ buffer.append(" = ");
+
String text = initializer.getText();
text = text.trim();
int index1 = text.indexOf('\n');
@@ -553,14 +557,16 @@ public class JavaDocInfoGenerator {
if (index2 < 0) index2 = text.length();
int index = Math.min(index1, index2);
boolean trunc = index < text.length();
- text = text.substring(0, index);
- buffer.append(" = ");
- text = StringUtil.replace(text, "<", "<");
- text = StringUtil.replace(text, ">", ">");
- buffer.append(text);
if (trunc) {
+ text = text.substring(0, index);
+ text = StringUtil.replace(text, "<", "<");
+ text = StringUtil.replace(text, ">", ">");
+ buffer.append(text);
buffer.append("...");
}
+ else {
+ initializer.accept(new MyVisitor(buffer));
+ }
}
}
@@ -1762,4 +1768,45 @@ public class JavaDocInfoGenerator {
return comment.findTagByName("return");
}
}
+
+ private static class MyVisitor extends JavaElementVisitor {
+
+ @NotNull private final StringBuilder myBuffer;
+
+ MyVisitor(@NotNull StringBuilder buffer) {
+ myBuffer = buffer;
+ }
+
+ @Override
+ public void visitNewExpression(PsiNewExpression expression) {
+ myBuffer.append("new ");
+ PsiType type = expression.getType();
+ if (type != null) {
+ generateType(myBuffer, type, expression);
+ }
+ myBuffer.append("(");
+ expression.acceptChildren(this);
+ myBuffer.append(")");
+ }
+
+ @Override
+ public void visitExpressionList(PsiExpressionList list) {
+ String separator = ", ";
+ PsiExpression[] expressions = list.getExpressions();
+ for (PsiExpression expression : expressions) {
+ expression.accept(this);
+ myBuffer.append(separator);
+ }
+ if (expressions.length > 0) {
+ myBuffer.setLength(myBuffer.length() - separator.length());
+ }
+ }
+
+ @Override
+ public void visitMethodCallExpression(PsiMethodCallExpression expression) {
+ myBuffer.append(expression.getMethodExpression().getText()).append("(");
+ expression.getArgumentList().acceptChildren(this);
+ myBuffer.append(")");
+ }
+ }
}
diff --git a/java/java-tests/testData/codeInsight/javadocIG/initializerWithNew.html b/java/java-tests/testData/codeInsight/javadocIG/initializerWithNew.html
new file mode 100644
index 000000000000..d11e238610a6
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/javadocIG/initializerWithNew.html
@@ -0,0 +1 @@
+ Apublic List<String> strings = new ArrayList<String>(new ArrayList<Integer>(), Collections.singleton(new ArrayList<Double>()))
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/javadocIG/initializerWithNew.java b/java/java-tests/testData/codeInsight/javadocIG/initializerWithNew.java
new file mode 100644
index 000000000000..de4f41b8de51
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/javadocIG/initializerWithNew.java
@@ -0,0 +1,6 @@
+import java.util.ArrayList;
+import java.util.List;
+
+class A {
+ public List strings = new ArrayList(new ArrayList(), Collections.singleton(new ArrayList()));
+}
diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java
index 71b6fc1c69eb..666709af1083 100644
--- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java
@@ -55,6 +55,10 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase {
doTestMethod();
}
+ public void testInitializerWithNew() throws Exception {
+ doTestField();
+ }
+
private void doTestField() throws Exception {
PsiClass psiClass = getTestClass();
PsiField field = psiClass.getFields() [0];