mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-111684 Quick Documentation should resolve values for aggregated / indirect constants
This commit is contained in:
@@ -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');
|
||||
|
||||
@@ -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(" = ");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user