diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/GroovyParser.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/GroovyParser.java index d12550a57d0f..5c84fe41db82 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/GroovyParser.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/GroovyParser.java @@ -117,7 +117,7 @@ public class GroovyParser implements PsiParser { } else { warn.rollbackTo(); - builder.error(GroovyBundle.message("expression.expected")); + builder.error(GroovyBundle.message("statement.expected")); } marker.done(FOR_STATEMENT); return true; @@ -214,7 +214,7 @@ public class GroovyParser implements PsiParser { if (!parseStatement(builder, true) && !parseExtendedStatement(builder)) { warn.rollbackTo(); - builder.error(GroovyBundle.message("expression.expected")); + builder.error(GroovyBundle.message("statement.expected")); return false; } else { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/SwitchStatement.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/SwitchStatement.java index 3a9e510ef6bb..7755763f69fb 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/SwitchStatement.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/SwitchStatement.java @@ -80,10 +80,15 @@ public class SwitchStatement implements GroovyElementTypes { PsiBuilder.Marker sectionMarker = builder.mark(); parseCaseLabel(builder, parser); + + final PsiBuilder.Marker warn = builder.mark(); ParserUtils.getToken(builder, mNLS); if (builder.getTokenType() == mRCURLY) { - builder.error(GroovyBundle.message("expression.expected")); - } else { + warn.rollbackTo(); + builder.error(GroovyBundle.message("statement.expected")); + } + else { + warn.drop(); parser.parseSwitchCaseList(builder); } sectionMarker.done(CASE_SECTION); @@ -111,10 +116,10 @@ public class SwitchStatement implements GroovyElementTypes { ParserUtils.getToken(builder, mNLS); if (parseCaseLabel(builder, parser)) { beforeNls.drop(); - } else { + } + else { beforeNls.rollbackTo(); } return true; } - } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/TryCatchStatement.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/TryCatchStatement.java index ad3f8ebfff4e..3d4bf2a9530f 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/TryCatchStatement.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/TryCatchStatement.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -104,8 +104,9 @@ public class TryCatchStatement implements GroovyElementTypes { ParserUtils.getToken(builder, mNLS); if (!mLCURLY.equals(builder.getTokenType()) || !OpenOrClosableBlock.parseOpenBlock(builder, parser)) { warn.rollbackTo(); - builder.error(GroovyBundle.message("expression.expected")); - } else { + builder.error(GroovyBundle.message("lcurly.expected")); + } + else { warn.drop(); } @@ -117,7 +118,4 @@ public class TryCatchStatement implements GroovyElementTypes { parseHandlers(builder, parser); } } - - - } 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 ecdd8257e496..5de6ab694c2c 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 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,7 +49,7 @@ public class OpenOrClosableBlock implements GroovyElementTypes { ParserUtils.getToken(builder, mNLS); parser.parseBlockBody(builder); if (!builder.eof() && builder.getTokenType() != mRCURLY) { - builder.error(GroovyBundle.message("expression.expected")); + builder.error(GroovyBundle.message("statement.expected")); ParserUtils.skipCountingBraces(builder, GroovyParser.RCURLY_ONLY); } diff --git a/plugins/groovy/testdata/parsing/groovy/statements/for/for2.test b/plugins/groovy/testdata/parsing/groovy/statements/for/for2.test index 09f3e2eda213..465141d699a1 100644 --- a/plugins/groovy/testdata/parsing/groovy/statements/for/for2.test +++ b/plugins/groovy/testdata/parsing/groovy/statements/for/for2.test @@ -21,7 +21,7 @@ Groovy script Literal PsiElement(Integer)('10') PsiElement())(')') - PsiErrorElement:Expression expected + PsiErrorElement:Statement expected PsiElement(new line)('\n') PsiErrorElement:Unexpected symbol diff --git a/plugins/groovy/testdata/parsing/groovy/statements/ifstmt/if5.test b/plugins/groovy/testdata/parsing/groovy/statements/ifstmt/if5.test index bc8104f86be9..752ee0812df6 100644 --- a/plugins/groovy/testdata/parsing/groovy/statements/ifstmt/if5.test +++ b/plugins/groovy/testdata/parsing/groovy/statements/ifstmt/if5.test @@ -13,5 +13,5 @@ Groovy script PsiElement(identifier)('expr2') PsiWhiteSpace(' ') PsiElement(else)('else') - PsiErrorElement:Expression expected + PsiErrorElement:Statement expected \ No newline at end of file diff --git a/plugins/groovy/testdata/parsing/groovy/statements/switch/swit4.test b/plugins/groovy/testdata/parsing/groovy/statements/switch/swit4.test index 92358faa1a90..8fba50cb73af 100644 --- a/plugins/groovy/testdata/parsing/groovy/statements/switch/swit4.test +++ b/plugins/groovy/testdata/parsing/groovy/statements/switch/swit4.test @@ -28,8 +28,8 @@ Groovy script Case label PsiElement(default)('default') PsiElement(:)(':') - PsiWhiteSpace(' ') - PsiElement(new line)('\n') - PsiErrorElement:Expression expected + PsiErrorElement:Statement expected + PsiWhiteSpace(' ') + PsiElement(new line)('\n') PsiElement(})('}') \ No newline at end of file diff --git a/plugins/groovy/testdata/parsing/groovy/statements/switch/swit6.test b/plugins/groovy/testdata/parsing/groovy/statements/switch/swit6.test index ca6b3294a8fa..1c025fb7d1f2 100644 --- a/plugins/groovy/testdata/parsing/groovy/statements/switch/swit6.test +++ b/plugins/groovy/testdata/parsing/groovy/statements/switch/swit6.test @@ -42,8 +42,8 @@ Groovy script Case label PsiElement(default)('default') PsiElement(:)(':') - PsiWhiteSpace(' ') - PsiElement(new line)('\n') - PsiErrorElement:Expression expected + PsiErrorElement:Statement expected + PsiWhiteSpace(' ') + PsiElement(new line)('\n') PsiElement(})('}') \ No newline at end of file