KT-8042 ISE at KotlinHighlightExitPointsHandlerFactory.createHighlightUsagesHandler() on typing a function name starting with throw
#KT-8042 fixed #EA-68157 fixed
This commit is contained in:
+6
-1
@@ -41,7 +41,12 @@ public class KotlinHighlightExitPointsHandlerFactory: HighlightUsagesHandlerFact
|
||||
|
||||
override fun createHighlightUsagesHandler(editor: Editor, file: PsiFile, target: PsiElement): HighlightUsagesHandlerBase<*>? {
|
||||
if (target is LeafPsiElement && (target.getElementType() in RETURN_AND_THROW)) {
|
||||
val returnOrThrow: JetExpression = PsiTreeUtil.getParentOfType(target, javaClass<JetReturnExpression>(), javaClass<JetThrowExpression>())
|
||||
val returnOrThrow = PsiTreeUtil.getParentOfType<JetExpression>(
|
||||
target,
|
||||
javaClass<JetReturnExpression>(),
|
||||
javaClass<JetThrowExpression>()
|
||||
) ?: return null
|
||||
|
||||
return MyHandler(editor, file, returnOrThrow)
|
||||
}
|
||||
return null
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// KT-8042 ISE at KotlinHighlightExitPointsHandlerFactory.createHighlightUsagesHandler() on typing a function name starting with `throw`
|
||||
// EA-68157
|
||||
|
||||
fun return<caret>
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// KT-8042 ISE at KotlinHighlightExitPointsHandlerFactory.createHighlightUsagesHandler() on typing a function name starting with `throw`
|
||||
// EA-68157
|
||||
|
||||
fun throw<caret>
|
||||
@@ -17,6 +17,8 @@
|
||||
package org.jetbrains.kotlin.idea.highlighter
|
||||
|
||||
import com.intellij.codeInsight.highlighting.HighlightUsagesHandler
|
||||
import com.intellij.openapi.editor.colors.EditorColors
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import kotlin.test.assertEquals
|
||||
@@ -28,7 +30,9 @@ public abstract class AbstractHighlightExitPointsTest : LightCodeInsightFixtureT
|
||||
|
||||
val text = myFixture.getFile().getText()
|
||||
val expectedToBeHighlighted = InTextDirectivesUtils.findLinesWithPrefixesRemoved(text, "//HIGHLIGHTED:")
|
||||
val searchResultsTextAttributes = EditorColorsManager.getInstance().getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES)
|
||||
val highlighters = myFixture.getEditor().getMarkupModel().getAllHighlighters()
|
||||
.filter { it.getTextAttributes() == searchResultsTextAttributes }
|
||||
val actual = highlighters.map { text.substring(it.getStartOffset(), it.getEndOffset()) }
|
||||
assertEquals(expectedToBeHighlighted, actual)
|
||||
}
|
||||
|
||||
+12
@@ -65,6 +65,18 @@ public class HighlightExitPointsTestGenerated extends AbstractHighlightExitPoint
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("invalidReturn.kt")
|
||||
public void testInvalidReturn() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/exitPoints/invalidReturn.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("invalidThrow.kt")
|
||||
public void testInvalidThrow() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/exitPoints/invalidThrow.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("localFunction1.kt")
|
||||
public void testLocalFunction1() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/exitPoints/localFunction1.kt");
|
||||
|
||||
Reference in New Issue
Block a user