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 3cae4f5aaa94..85ac3b1327b0 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -114,7 +114,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext } private static void generateInitializer(StringBuilder buffer, PsiVariable variable) { - PsiExpression initializer = variable.getInitializer(); + PsiExpression initializer = JavaDocInfoGenerator.calcInitializerExpression(variable); if (initializer != null) { String text = initializer.getText().trim(); int index1 = text.indexOf('\n'); 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 4cc3345ed3c0..51cfa1de5731 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 @@ -595,8 +595,29 @@ public class JavaDocInfoGenerator { generateEpilogue(buffer); } - private static void appendInitializer(StringBuilder buffer, PsiVariable variable) { + public static PsiExpression calcInitializerExpression(PsiVariable variable) { PsiExpression initializer = variable.getInitializer(); + if (initializer != null) { + PsiModifierList modifierList = variable.getModifierList(); + if (modifierList != null && modifierList.hasModifierProperty(PsiModifier.FINAL) && !(initializer instanceof PsiLiteralExpression)) { + JavaPsiFacade instance = JavaPsiFacade.getInstance(variable.getProject()); + Object o = instance.getConstantEvaluationHelper().computeConstantExpression(initializer); + if (o != null) { + String text = o.toString(); + PsiType type = variable.getType(); + if (type.equalsToText(CommonClassNames.JAVA_LANG_STRING)) { + text = "\"" + StringUtil.trimLog(text, 120) + "\""; + } + else if (type.equalsToText("char")) text = "'" + text + "'"; + initializer = instance.getElementFactory().createExpressionFromText(text, variable); + } + } + } + return initializer; + } + + private static void appendInitializer(StringBuilder buffer, PsiVariable variable) { + PsiExpression initializer = calcInitializerExpression(variable); if (initializer != null) { buffer.append(" = ");