From f8e86dc14bbc1859166805dd2871aeaca4a0309f Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 23 Jan 2019 19:01:19 +0300 Subject: [PATCH] checkCancelled for reparsables --- platform/core-impl/src/com/intellij/lang/PsiBuilderUtil.java | 2 ++ .../org/jetbrains/plugins/groovy/lang/parser/parserUtils.kt | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/lang/PsiBuilderUtil.java b/platform/core-impl/src/com/intellij/lang/PsiBuilderUtil.java index 7e57878e9b0a..d9323558142e 100644 --- a/platform/core-impl/src/com/intellij/lang/PsiBuilderUtil.java +++ b/platform/core-impl/src/com/intellij/lang/PsiBuilderUtil.java @@ -16,6 +16,7 @@ package com.intellij.lang; import com.intellij.lexer.Lexer; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import org.jetbrains.annotations.NotNull; @@ -155,6 +156,7 @@ public class PsiBuilderUtil { int balance = 1; while (true) { + ProgressManager.checkCanceled(); IElementType type = lexer.getTokenType(); if (type == null) { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/parser/parserUtils.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/parser/parserUtils.kt index 16e04220b9ac..932ae83f164d 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/parser/parserUtils.kt +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/parser/parserUtils.kt @@ -9,6 +9,7 @@ import com.intellij.lang.PsiBuilder import com.intellij.lang.PsiBuilder.Marker import com.intellij.lang.PsiBuilderUtil.parseBlockLazy import com.intellij.lang.parser.GeneratedParserUtilBase.* +import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.util.Key import com.intellij.openapi.util.KeyWithDefaultValue import com.intellij.openapi.util.text.StringUtil.contains @@ -16,7 +17,8 @@ import com.intellij.psi.tree.IElementType import com.intellij.psi.tree.TokenSet import org.jetbrains.plugins.groovy.GroovyBundle import org.jetbrains.plugins.groovy.lang.lexer.GroovyLexer -import org.jetbrains.plugins.groovy.lang.parser.GroovyGeneratedParser.* +import org.jetbrains.plugins.groovy.lang.parser.GroovyGeneratedParser.closure_header_with_arrow +import org.jetbrains.plugins.groovy.lang.parser.GroovyGeneratedParser.parenthesized_lambda_expression_head import org.jetbrains.plugins.groovy.lang.psi.GroovyElementTypes.* import org.jetbrains.plugins.groovy.lang.psi.GroovyTokenSets.* import org.jetbrains.plugins.groovy.util.get @@ -475,6 +477,7 @@ fun isBlockParseable(text: CharSequence): Boolean { } while (true) { + ProgressManager.checkCanceled() val type = lexer.tokenType ?: return leftStack.isEmpty() if (leftStack.isEmpty()) { return false