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 4d7749a813d6..1d79658c2c69 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -364,6 +364,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext generateInitializer(buffer, field); + JavaDocInfoGenerator.enumConstantOrdinal(buffer, field, parentClass, "\n"); return buffer.toString(); } diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index dca78ce60d56..914a30024aef 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -39,6 +39,7 @@ import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiFormatUtilBase; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ArrayUtil; +import com.intellij.util.ArrayUtilRt; import com.intellij.util.IncorrectOperationException; import org.jdom.Document; import org.jdom.Element; @@ -466,6 +467,17 @@ public class JavaDocInfoGenerator { generateEpilogue(buffer); } + public static void enumConstantOrdinal(StringBuilder buffer, PsiField field, PsiClass parentClass, final String newLine) { + if (parentClass != null && field instanceof PsiEnumConstant) { + final PsiField[] fields = parentClass.getFields(); + final int idx = ArrayUtilRt.find(fields, field); + if (idx >= 0) { + buffer.append(newLine); + buffer.append("Enum constant ordinal: ").append(idx); + } + } + } + // not a javadoc in fact.. private static void generateVariableJavaDoc(@NonNls StringBuilder buffer, PsiVariable variable, boolean generatePrologueAndEpilogue) { if (generatePrologueAndEpilogue) diff --git a/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.html b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.html new file mode 100644 index 000000000000..11d610085775 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.html @@ -0,0 +1,3 @@ +E + E A +Enum constant ordinal: 0 \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.java b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.java new file mode 100644 index 000000000000..488f14fb4dab --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/enumConstantOrdinal.java @@ -0,0 +1,3 @@ +enum E { + A; +} \ No newline at end of file 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 e6595b98b11a..9fefc23b0287 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java @@ -2,6 +2,7 @@ package com.intellij.codeInsight.javadoc; import com.intellij.JavaTestUtil; import com.intellij.codeInsight.CodeInsightTestCase; +import com.intellij.lang.java.JavaDocumentationProvider; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; @@ -62,7 +63,17 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { public void testInitializerWithReference() throws Exception { doTestField(); } - + + public void testEnumConstantOrdinal() throws Exception { + PsiClass psiClass = getTestClass(); + PsiField field = psiClass.getFields() [0]; + final File htmlPath = new File(JavaTestUtil.getJavaTestDataPath() + "/codeInsight/javadocIG/" + getTestName(true) + ".html"); + String htmlText = FileUtil.loadFile(htmlPath); + String docInfo = new JavaDocumentationProvider().getQuickNavigateInfo(field, field); + assertNotNull(docInfo); + assertEquals(StringUtil.convertLineSeparators(htmlText.trim()), StringUtil.convertLineSeparators(docInfo.trim())); + } + private void doTestField() throws Exception { PsiClass psiClass = getTestClass(); PsiField field = psiClass.getFields() [0];