From 4e3a57bbaebcd4ac1d1b949e2adf20eece9e4cfe Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 21 Mar 2011 15:24:33 +0100 Subject: [PATCH] count braces while waiting for } --- .../blocks/OpenOrClosableBlock.java | 6 ++-- .../lang/parser/parsing/util/ParserUtils.java | 32 ------------------- 2 files changed, 3 insertions(+), 35 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/blocks/OpenOrClosableBlock.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/blocks/OpenOrClosableBlock.java index 11fbd687fbd4..ecdd8257e496 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/blocks/OpenOrClosableBlock.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/blocks/OpenOrClosableBlock.java @@ -48,11 +48,11 @@ public class OpenOrClosableBlock implements GroovyElementTypes { builder.advanceLexer(); ParserUtils.getToken(builder, mNLS); parser.parseBlockBody(builder); - while (!builder.eof() && - !mRCURLY.equals(builder.getTokenType())) { + if (!builder.eof() && builder.getTokenType() != mRCURLY) { builder.error(GroovyBundle.message("expression.expected")); - builder.advanceLexer(); + ParserUtils.skipCountingBraces(builder, GroovyParser.RCURLY_ONLY); } + ParserUtils.getToken(builder, mRCURLY, GroovyBundle.message("rcurly.expected")); marker.done(OPEN_BLOCK); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/util/ParserUtils.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/util/ParserUtils.java index d9078d8891b4..8abf4e27ca5d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/util/ParserUtils.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/util/ParserUtils.java @@ -119,38 +119,6 @@ public abstract class ParserUtils { return i == elems.length; } - /** - * Checks, that following element sequence is like given - * - * @param builder Given PsiBuilder - * @param dropMarker to drop marker after successful checking or rollback it? - * @param elems Array of need elements in order - * @return true if following sequence is like a given - */ - public static boolean lookAhead(PsiBuilder builder, boolean dropMarker, IElementType... elems) { - - if (elems.length == 0) { - return false; - } - - if (elems.length == 1) { - return elems[0].equals(builder.getTokenType()); - } - - PsiBuilder.Marker rb = builder.mark(); - int i = 0; - while (!builder.eof() && i < elems.length && elems[i].equals(builder.getTokenType())) { - builder.advanceLexer(); - i++; - } - if (dropMarker && i == elems.length) { - rb.drop(); - } else { - rb.rollbackTo(); - } - return i == elems.length; - } - /** * Wraps current token to node with specified element type *