diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 4750f7b9227c..4c208ec1befb 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -1036,27 +1036,15 @@ public class HighlightUtil extends HighlightUtilBase { } } else if (type == JavaTokenType.CHARACTER_LITERAL) { - if (value != null) { - if (!StringUtil.endsWithChar(text, '\'')) { - String message = JavaErrorMessages.message("unclosed.char.literal"); - return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(message).create(); - } - } - else { + if (value == null) { if (!StringUtil.startsWithChar(text, '\'')) { return null; } - if (StringUtil.endsWithChar(text, '\'')) { - if (text.length() == 1) { - String message = JavaErrorMessages.message("illegal.line.end.in.character.literal"); - return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(message).create(); - } - text = text.substring(1, text.length() - 1); - } - else { - String message = JavaErrorMessages.message("illegal.line.end.in.character.literal"); + if (!StringUtil.endsWithChar(text, '\'') || text.length() == 1) { + String message = JavaErrorMessages.message("unclosed.char.literal"); return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(message).create(); } + text = text.substring(1, text.length() - 1); StringBuilder chars = new StringBuilder(); boolean success = PsiLiteralExpressionImpl.parseStringCharacters(text, chars, null); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java index f8da7086b9ef..94dec371ce94 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java @@ -134,13 +134,10 @@ public class PsiLiteralExpressionImpl return PsiLiteralUtil.parseDouble(text); } if (type == JavaTokenType.CHARACTER_LITERAL) { - if (StringUtil.endsWithChar(text, '\'')) { - if (textLength == 1) return null; - text = text.substring(1, textLength - 1); - } - else { - text = text.substring(1, textLength); + if (textLength == 1 || !StringUtil.endsWithChar(text, '\'')) { + return null; } + text = text.substring(1, textLength - 1); StringBuilder chars = new StringBuilder(); boolean success = parseStringCharacters(text, chars, null); if (!success) return null; diff --git a/java/java-psi-impl/src/messages/JavaErrorMessages.properties b/java/java-psi-impl/src/messages/JavaErrorMessages.properties index d42fc7584c1e..df97c97e929a 100644 --- a/java/java-psi-impl/src/messages/JavaErrorMessages.properties +++ b/java/java-psi-impl/src/messages/JavaErrorMessages.properties @@ -315,7 +315,6 @@ binary.numbers.must.contain.at.least.one.hexadecimal.digit=Binary numbers must c integer.number.too.large=Integer number too large long.number.too.large=Long number too large malformed.floating.point.literal=Malformed floating point literal -illegal.line.end.in.character.literal=Illegal line end in character literal illegal.escape.character.in.character.literal=Illegal escape character in character literal too.many.characters.in.character.literal=Too many characters in character literal empty.character.literal=Empty character literal diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/portability/HardcodedFileSeparatorsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/portability/HardcodedFileSeparatorsInspection.java index 74114a3b90b7..ea73ae1a7a8e 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/portability/HardcodedFileSeparatorsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/portability/HardcodedFileSeparatorsInspection.java @@ -146,7 +146,6 @@ public class HardcodedFileSeparatorsInspection extends BaseInspection { @Override public void visitLiteralExpression(@NotNull PsiLiteralExpression expression) { super.visitLiteralExpression(expression); - if (expression.getNextSibling() instanceof PsiErrorElement) return; final PsiType type = expression.getType(); if (TypeUtils.isJavaLangString(type)) {