This commit is contained in:
Natalia Ukhorskaya
2013-11-25 19:45:08 +04:00
parent f996860f83
commit 888b747feb
3 changed files with 12 additions and 13 deletions
@@ -75,10 +75,10 @@ public class ConstantExpressionEvaluator private (val trace: BindingTrace) : Jet
val text = expression.getText()
if (text == null) return null
val result: Any? = when (expression.getNode().getElementType()) {
JetNodeTypes.INTEGER_CONSTANT -> CompileTimeConstantResolver.parseLongValue(text)
JetNodeTypes.FLOAT_CONSTANT -> CompileTimeConstantResolver.parseDoubleValue(text)
JetNodeTypes.BOOLEAN_CONSTANT -> CompileTimeConstantResolver.parseBooleanValue(text)
JetNodeTypes.CHARACTER_CONSTANT -> CompileTimeConstantResolver.parseCharValue(text)
JetNodeTypes.INTEGER_CONSTANT -> CompileTimeConstantResolver.parseLong(text)
JetNodeTypes.FLOAT_CONSTANT -> CompileTimeConstantResolver.parseDouble(text)
JetNodeTypes.BOOLEAN_CONSTANT -> CompileTimeConstantResolver.parseBoolean(text)
JetNodeTypes.CHARACTER_CONSTANT -> CompileTimeConstantResolver.parseChar(text)
JetNodeTypes.NULL -> null
else -> throw IllegalArgumentException("Unsupported constant: " + expression)
}
@@ -157,7 +157,7 @@ public class CompileTimeConstantResolver {
}
@Nullable
public static Long parseLongValue(String text) {
public static Long parseLong(String text) {
try {
long value;
if (text.startsWith("0x") || text.startsWith("0X")) {
@@ -179,7 +179,7 @@ public class CompileTimeConstantResolver {
}
@Nullable
public static Double parseDoubleValue(String text) {
public static Double parseDouble(String text) {
try {
return Double.parseDouble(text);
}
@@ -189,7 +189,7 @@ public class CompileTimeConstantResolver {
}
@NotNull
public static Object parseBooleanValue(@NotNull String text) {
public static Object parseBoolean(@NotNull String text) {
if ("true".equals(text)) {
return true;
}
@@ -200,7 +200,7 @@ public class CompileTimeConstantResolver {
}
@Nullable
public static Character parseCharValue(@NotNull String text) {
public static Character parseChar(@NotNull String text) {
// Strip the quotes
if (text.length() < 2 || text.charAt(0) != '\'' || text.charAt(text.length() - 1) != '\'') {
return null;
@@ -217,11 +217,11 @@ public class CompileTimeConstantResolver {
return text.charAt(0);
}
}
return escapedStringToCharValue(text);
return escapedStringToChar(text);
}
@Nullable
public static Character escapedStringToCharValue(@NotNull String text) {
public static Character escapedStringToChar(@NotNull String text) {
if (!(text.length() > 0 && text.charAt(0) == '\\')) return null;
// Escape
@@ -48,7 +48,6 @@ import org.jetbrains.jet.lang.resolve.calls.tasks.ResolutionCandidate;
import org.jetbrains.jet.lang.resolve.calls.tasks.TracingStrategy;
import org.jetbrains.jet.lang.resolve.calls.util.CallMaker;
import org.jetbrains.jet.lang.resolve.constants.*;
import org.jetbrains.jet.lang.resolve.constants.StringValue;
import org.jetbrains.jet.lang.resolve.name.LabelName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
@@ -137,7 +136,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
if (noExpectedType(context.expectedType) && context.contextDependency == DEPENDENT) {
if (elementType == JetNodeTypes.INTEGER_CONSTANT) {
Long longValue = CompileTimeConstantResolver.parseLongValue(text);
Long longValue = CompileTimeConstantResolver.parseLong(text);
if (longValue != null) {
return createNumberValueTypeInfo(new IntegerValueTypeConstructor((long) longValue), longValue, context.dataFlowInfo);
}
@@ -1179,7 +1178,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
@Override
public void visitEscapeStringTemplateEntry(@NotNull JetEscapeStringTemplateEntry entry) {
Character character = CompileTimeConstantResolver.escapedStringToCharValue(entry.getText());
Character character = CompileTimeConstantResolver.escapedStringToChar(entry.getText());
if (character == null) {
context.trace.report(Errors.ILLEGAL_ESCAPE.on(entry, entry));
}