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:
Evgeny Gerashchenko
2015-06-15 16:04:57 +03:00
parent 0dd151142d
commit 985b8c0ba6
5 changed files with 30 additions and 1 deletions
@@ -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
View File
@@ -0,0 +1,4 @@
// KT-8042 ISE at KotlinHighlightExitPointsHandlerFactory.createHighlightUsagesHandler() on typing a function name starting with `throw`
// EA-68157
fun return<caret>
+4
View File
@@ -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)
}
@@ -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");