do not call bundle.message before actual reporting error

This commit is contained in:
Maxim.Mossienko
2012-01-26 17:30:18 +04:00
parent e34c877e53
commit 08674a4847
6 changed files with 27 additions and 22 deletions
@@ -27,6 +27,7 @@ import com.intellij.psi.tree.TokenSet;
import com.intellij.util.text.CharArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.PropertyKey;
import static com.intellij.lang.PsiBuilderUtil.expect;
import static com.intellij.lang.PsiBuilderUtil.nextTokenType;
@@ -86,7 +87,7 @@ public class DeclarationParser {
}
parseClassBodyDeclarations(builderWrapper, isAnnotation);
expectOrError(builder, JavaTokenType.RBRACE, JavaErrorMessages.message("expected.rbrace"));
expectOrError(builder, JavaTokenType.RBRACE, "expected.rbrace");
}
@Nullable
@@ -139,7 +140,7 @@ public class DeclarationParser {
}
if (declarationsAfterEnd) {
expectOrError(builder, JavaTokenType.RBRACE, JavaErrorMessages.message("expected.rbrace"));
expectOrError(builder, JavaTokenType.RBRACE, "expected.rbrace");
}
}
@@ -426,7 +427,7 @@ public class DeclarationParser {
final boolean anno, final boolean constructor) {
parseParameterList(builder);
eatBrackets(builder, constructor, JavaErrorMessages.message("expected.semicolon"));
eatBrackets(builder, constructor, "expected.semicolon");
if (areTypeAnnotationsSupported(builder)) {
final PsiBuilder.Marker receiver = builder.mark();
@@ -489,8 +490,8 @@ public class DeclarationParser {
builder.advanceLexer();
final IElementType delimiter = resources ? JavaTokenType.SEMICOLON : JavaTokenType.COMMA;
final String noDelimiterMsg = JavaErrorMessages.message(resources ? "expected.semicolon" : "expected.comma");
final String noElementMsg = JavaErrorMessages.message(resources ? "expected.resource" : "expected.parameter");
final String noDelimiterMsg = resources ? "expected.semicolon" : "expected.comma";
final String noElementMsg = resources ? "expected.resource" : "expected.parameter";
PsiBuilder.Marker invalidElements = null;
String errorMessage = null;
@@ -548,7 +549,7 @@ public class DeclarationParser {
if (invalidElements == null) {
if (builder.getTokenType() == delimiter) {
error(builder, noElementMsg);
error(builder, JavaErrorMessages.message(noElementMsg));
builder.advanceLexer();
if (noElements && resources) {
noElements = false;
@@ -557,7 +558,7 @@ public class DeclarationParser {
}
else {
invalidElements = builder.mark();
errorMessage = delimiterExpected ? noDelimiterMsg : noElementMsg;
errorMessage = JavaErrorMessages.message(delimiterExpected ? noDelimiterMsg : noElementMsg);
}
}
@@ -613,7 +614,7 @@ public class DeclarationParser {
if (expect(builder, JavaTokenType.IDENTIFIER)) {
if (!resource) {
eatBrackets(builder, typeInfo != null && typeInfo.isVarArg, JavaErrorMessages.message("expected.rparen"));
eatBrackets(builder, typeInfo != null && typeInfo.isVarArg, "expected.rparen");
done(param, JavaElementType.PARAMETER);
return param;
}
@@ -624,7 +625,7 @@ public class DeclarationParser {
return modListInfo.first;
}
if (expectOrError(builder, JavaTokenType.EQ, JavaErrorMessages.message("expected.eq"))) {
if (expectOrError(builder, JavaTokenType.EQ, "expected.eq")) {
if (myExpressionParser.parse(builder) == null) {
error(builder, JavaErrorMessages.message("expected.expression"));
}
@@ -720,7 +721,8 @@ public class DeclarationParser {
return declaration;
}
private static boolean eatBrackets(final PsiBuilder builder, final boolean isError, @Nullable final String error) {
private static boolean eatBrackets(final PsiBuilder builder, final boolean isError,
@Nullable @PropertyKey(resourceBundle = JavaErrorMessages.BUNDLE) String errorKey) {
if (builder.getTokenType() != JavaTokenType.LBRACKET) return true;
final PsiBuilder.Marker marker = isError ? builder.mark() : null;
@@ -735,7 +737,7 @@ public class DeclarationParser {
}
if (marker != null) {
marker.error(error);
marker.error(errorKey != null ? JavaErrorMessages.message(errorKey):null);
}
return result;
@@ -840,9 +842,9 @@ public class DeclarationParser {
pair = builder.mark();
}
final boolean hasName = expectOrError(builder, JavaTokenType.IDENTIFIER, JavaErrorMessages.message("expected.identifier"));
final boolean hasName = expectOrError(builder, JavaTokenType.IDENTIFIER, "expected.identifier");
expectOrError(builder, JavaTokenType.EQ, JavaErrorMessages.message("expected.eq"));
expectOrError(builder, JavaTokenType.EQ, "expected.eq");
parseAnnotationValue(builder);
@@ -404,7 +404,7 @@ public class ExpressionParser {
final PsiBuilder.Marker refExpr = expr.precede();
myReferenceParser.parseReferenceParameterList(builder, false, false);
if (!JavaParserUtil.expectOrError(builder, JavaTokenType.IDENTIFIER, JavaErrorMessages.message("expected.identifier"))) {
if (!JavaParserUtil.expectOrError(builder, JavaTokenType.IDENTIFIER, "expected.identifier")) {
refExpr.done(JavaElementType.REFERENCE_EXPRESSION);
startMarker.drop();
return refExpr;
@@ -726,7 +726,7 @@ public class ExpressionParser {
}
bracketCount++;
if (!JavaParserUtil.expectOrError(builder, JavaTokenType.RBRACKET, JavaErrorMessages.message("expected.rbracket"))) {
if (!JavaParserUtil.expectOrError(builder, JavaTokenType.RBRACKET, "expected.rbracket")) {
newExpr.done(JavaElementType.NEW_EXPRESSION);
return newExpr;
}
@@ -812,7 +812,7 @@ public class ExpressionParser {
}
}
final boolean closed = JavaParserUtil.expectOrError(builder, JavaTokenType.RPARENTH, JavaErrorMessages.message("expected.rparen"));
final boolean closed = JavaParserUtil.expectOrError(builder, JavaTokenType.RPARENTH, "expected.rparen");
list.done(JavaElementType.EXPRESSION_LIST);
if (!closed) {
@@ -39,6 +39,7 @@ import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.PropertyKey;
import java.util.List;
@@ -258,9 +259,10 @@ public class JavaParserUtil {
}
}
public static boolean expectOrError(final PsiBuilder builder, final IElementType expectedType, final String errorMessage) {
public static boolean expectOrError(final PsiBuilder builder, final IElementType expectedType,
@PropertyKey(resourceBundle = JavaErrorMessages.BUNDLE) String errorMessageKey) {
if (!PsiBuilderUtil.expect(builder, expectedType)) {
error(builder, errorMessage);
error(builder, JavaErrorMessages.message(errorMessageKey));
return false;
}
return true;
@@ -275,7 +277,7 @@ public class JavaParserUtil {
}
public static void semicolon(final PsiBuilder builder) {
expectOrError(builder, JavaTokenType.SEMICOLON, JavaErrorMessages.message("expected.semicolon"));
expectOrError(builder, JavaTokenType.SEMICOLON, "expected.semicolon");
}
public static PsiBuilder braceMatchingBuilder(final PsiBuilder builder) {
@@ -293,7 +293,7 @@ public class ReferenceParser {
if (expect(builder, JavaTokenType.GT)) {
break;
}
else if (!expectOrError(builder, JavaTokenType.COMMA, JavaErrorMessages.message("expected.gt.or.comma"))) {
else if (!expectOrError(builder, JavaTokenType.COMMA, "expected.gt.or.comma")) {
isOk = false;
break;
}
@@ -131,7 +131,7 @@ public class StatementParser {
parseStatements(builder, parseUntilEof ? BraceMode.TILL_LAST : BraceMode.TILL_FIRST);
final boolean greedyBlock = !expectOrError(builder, JavaTokenType.RBRACE, JavaErrorMessages.message("expected.rbrace"));
final boolean greedyBlock = !expectOrError(builder, JavaTokenType.RBRACE, "expected.rbrace");
builder.getTokenType(); // eat spaces
done(codeBlock, JavaElementType.CODE_BLOCK);
@@ -543,7 +543,7 @@ public class StatementParser {
}
}
expectOrError(builder, JavaTokenType.COLON, JavaErrorMessages.message("expected.colon"));
expectOrError(builder, JavaTokenType.COLON, "expected.colon");
done(statement, JavaElementType.SWITCH_LABEL_STATEMENT);
return statement;
@@ -328,6 +328,7 @@ expected.lparen.or.lbracket='(' or '[' expected
expected.array.initializer=Array initializer expected
unexpected.tokens=Unexpected tokens
expected.gt.or.comma='>' or ',' expected.
string.expected=String literal expected
else.without.if='else' without 'if'
catch.without.try='catch' without 'try'
finally.without.try='finally' without 'try'