From cfb283ebd9730e3e866e42ad5436a44648d55493 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 29 Jan 2020 21:29:34 +0100 Subject: [PATCH] Cleanup (rearranging conditions for readability) GitOrigin-RevId: 060602129057458c4171b89dd53db32f6e7e70ac --- .../lang/java/parser/StatementParser.java | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/lang/java/parser/StatementParser.java b/java/java-psi-impl/src/com/intellij/lang/java/parser/StatementParser.java index dfac38b0c55c..b8b30372d4d9 100644 --- a/java/java-psi-impl/src/com/intellij/lang/java/parser/StatementParser.java +++ b/java/java-psi-impl/src/com/intellij/lang/java/parser/StatementParser.java @@ -162,29 +162,22 @@ public class StatementParser { refPos.rollbackTo(); if (suspectedLT == JavaTokenType.LT || suspectedLT == JavaTokenType.DOT && next == JavaTokenType.AT) { - final boolean constructorRef; - PsiBuilder.Marker declStatement = builder.mark(); - PsiBuilder.Marker decl = myParser.getDeclarationParser().parse(builder, DeclarationParser.Context.CODE_BLOCK); - if (decl == null) { - PsiBuilder.Marker marker = myParser.getReferenceParser().parseType(builder, 0); - // if the type declaration ends with "::" then it is a method reference to a constructor - constructorRef = builder.getTokenType() == JavaTokenType.DOUBLE_COLON; - if (!constructorRef) { - error(builder, JavaErrorBundle.message("expected.identifier")); - if (marker == null) builder.advanceLexer(); - } - } - else { - constructorRef = false; - } - - if (!constructorRef) { + if (myParser.getDeclarationParser().parse(builder, DeclarationParser.Context.CODE_BLOCK) != null) { done(declStatement, JavaElementType.DECLARATION_STATEMENT); return declStatement; } - declStatement.rollbackTo(); + + PsiBuilder.Marker type = myParser.getReferenceParser().parseType(builder, 0); + if (type == null || builder.getTokenType() != JavaTokenType.DOUBLE_COLON) { + error(builder, JavaErrorBundle.message("expected.identifier")); + if (type == null) builder.advanceLexer(); + done(declStatement, JavaElementType.DECLARATION_STATEMENT); + return declStatement; + } + + declStatement.rollbackTo(); // generic type followed by the double colon is a good candidate for being a constructor reference } }