Rendering default value in parameter info if it is not constant, too.

This commit is contained in:
Evgeny Gerashchenko
2012-12-27 19:41:17 +04:00
parent 4eac6f0d27
commit 87b5356ef9
2 changed files with 9 additions and 21 deletions
@@ -163,35 +163,23 @@ public class JetFunctionParameterInfoHandler implements
private static String getDefaultExpressionString(@Nullable PsiElement parameterDeclaration) {
if (parameterDeclaration instanceof JetParameter) {
JetExpression defaultValue = ((JetParameter) parameterDeclaration).getDefaultValue();
if (defaultValue != null && isConstantExpression(defaultValue)) {
if (defaultValue != null) {
String defaultExpression = defaultValue.getText();
if (defaultExpression.length() > 10) {
if (defaultExpression.length() <= 32) {
return defaultExpression;
}
if (defaultValue instanceof JetConstantExpression || defaultValue instanceof JetStringTemplateExpression) {
if (defaultExpression.startsWith("\"")) {
return "\"...\"";
}
else if (defaultExpression.startsWith("\'")) {
return "\'...\'";
}
else {
return defaultExpression.substring(0, 7) + "...";
}
}
return defaultExpression;
}
}
return "?";
}
private static boolean isConstantExpression(@NotNull JetExpression expression) {
if (expression instanceof JetStringTemplateExpression) {
for (JetStringTemplateEntry templateEntry : ((JetStringTemplateExpression) expression).getEntries()) {
if (templateEntry instanceof JetStringTemplateEntryWithExpression) {
return false;
}
}
return true;
}
return expression instanceof JetConstantExpression;
return "...";
}
private static JetType getActualParameterType(ValueParameterDescriptor descriptor) {
@@ -1,6 +1,6 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean = true, z: Long = 12345678901234, u: String = "abc\n", u0: String = "", uu: String = "$u", v: Char = '\u0000') = 2
fun m(x: Int, y: Boolean = true, z: Long = 12345678901234, u: String = "abc\n", u0: String = "" + "123", uu: String = "$u", v: Char = '\u0000', vv: String = "asdfsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf") = 2
fun d(x: Int) {
m(<caret>y = false, x = 1)
@@ -8,5 +8,5 @@ open class A(x: Int) {
}
/*
Text: ([x: Int]), Disabled: false, Strikeout: false, Green: false
Text: ([y: Boolean = true], [x: Int], [z: Long = 1234567...], [u: String = "abc\n"], [u0: String = ""], [uu: String = ?], [v: Char = '\u0000']), Disabled: false, Strikeout: false, Green: true
Text: ([y: Boolean = true], [x: Int], [z: Long = 12345678901234], [u: String = "abc\n"], [u0: String = "" + "123"], [uu: String = "$u"], [v: Char = '\u0000'], [vv: String = "..."]), Disabled: false, Strikeout: false, Green: true
*/