From cd2dab3e53e4be54f348d445c02a4f5f2f05c666 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Thu, 10 Nov 2011 15:05:07 +0400 Subject: [PATCH] KT-451 Incorrect character literals cause assertion failures '' '21' --- .../constants/CompileTimeConstantResolver.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java index 526bb6d3db0..7a1e1953cb2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java @@ -167,19 +167,20 @@ public class CompileTimeConstantResolver { assert text.charAt(0) == '\'' && text.charAt(text.length() - 1) == '\''; text = text.substring(1, text.length() - 1); - assert text.length() < 3 && text.length() > 0; - if (text.length() == 2) { - assert text.charAt(0) == '\\'; + if (text.length() == 0) { + return new ErrorValue("Empty character literal"); + } else if (text.length() == 1) { + return new CharValue(text.charAt(0)); + } else if (text.length() == 2 && text.charAt(0) == '\\') { Character escaped = translateEscape(text.charAt(1)); if (escaped == null) { return new ErrorValue("Illegal escape: " + text); } return new CharValue(escaped); + } else { + return new ErrorValue("Too many characters in character literal"); } - - assert text.length() == 1; - return new CharValue(text.charAt(0)); } @Nullable