diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java index b1a90199ee0..485591db5ba 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java @@ -20,6 +20,7 @@ import com.intellij.lang.PsiBuilder; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import com.intellij.util.containers.Stack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lexer.JetKeywordToken; import org.jetbrains.jet.lexer.JetToken; import org.jetbrains.jet.lexer.JetTokens; @@ -377,6 +378,11 @@ import static org.jetbrains.jet.lexer.JetTokens.*; return myBuilder.newlineBeforeCurrentToken() || eof(); } + protected static void closeDeclarationWithCommentBinders(@NotNull PsiBuilder.Marker marker, @NotNull IElementType elementType) { + marker.done(elementType); + marker.setCustomEdgeTokenBinders(PrecedingWhitespacesAndCommentsBinder.INSTANCE$, TrailingWhitespacesAndCommentsBinder.INSTANCE$); + } + protected abstract JetParsing create(SemanticWhitespaceAwarePsiBuilder builder); protected JetParsing createTruncatedBuilder(int eofPosition) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 2f7f6666f6f..d8346bfaf9a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -385,8 +385,7 @@ public class JetParsing extends AbstractJetParsing { decl.drop(); } else { - decl.done(declType); - decl.setCustomEdgeTokenBinders(PrecedingWhitespacesAndCommentsBinder.INSTANCE$, TrailingWhitespacesAndCommentsBinder.INSTANCE$); + closeDeclarationWithCommentBinders(decl, declType); } } @@ -686,9 +685,7 @@ public class JetParsing extends AbstractJetParsing { entryOrMember.drop(); } else { - entryOrMember.done(type); - entryOrMember.setCustomEdgeTokenBinders(PrecedingWhitespacesAndCommentsBinder.INSTANCE$, - TrailingWhitespacesAndCommentsBinder.INSTANCE$); + closeDeclarationWithCommentBinders(entryOrMember, type); } } @@ -778,8 +775,7 @@ public class JetParsing extends AbstractJetParsing { decl.drop(); } else { - decl.done(declType); - decl.setCustomEdgeTokenBinders(PrecedingWhitespacesAndCommentsBinder.INSTANCE$, TrailingWhitespacesAndCommentsBinder.INSTANCE$); + closeDeclarationWithCommentBinders(decl, declType); } } @@ -877,10 +873,7 @@ public class JetParsing extends AbstractJetParsing { PsiBuilder.Marker objectDeclaration = mark(); parseObject(false, true); - objectDeclaration.done(OBJECT_DECLARATION); - objectDeclaration.setCustomEdgeTokenBinders(PrecedingWhitespacesAndCommentsBinder.INSTANCE$, - TrailingWhitespacesAndCommentsBinder.INSTANCE$); - + closeDeclarationWithCommentBinders(objectDeclaration, OBJECT_DECLARATION); return CLASS_OBJECT; }