Skip to content

Commit 364c9b4

Browse files
committed
Fix IllegalStateException when typing a colon in Java code
1 parent 955599f commit 364c9b4

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/main/kotlin/util/reference/ReferenceResolver.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,16 @@ abstract class ReferenceResolver : PsiReferenceProvider() {
5656

5757
override fun resolve(): PsiElement? {
5858
val context = element.findContextElement()
59-
if (context.isValid) {
59+
if (context != null && context.isValid) {
6060
return resolver.resolveReference(context)
6161
}
6262
return null
6363
}
6464

6565
override fun getVariants(): Array<Any> {
6666
val context = element.findContextElement()
67-
if (context.isValid) {
68-
return resolver.collectVariants(element.findContextElement())
67+
if (context != null && context.isValid) {
68+
return resolver.collectVariants(context)
6969
}
7070
return ArrayUtil.EMPTY_OBJECT_ARRAY
7171
}
@@ -89,23 +89,23 @@ abstract class PolyReferenceResolver : PsiReferenceProvider() {
8989

9090
override fun multiResolve(incompleteCode: Boolean): Array<ResolveResult> {
9191
val context = element.findContextElement()
92-
if (context.isValid) {
92+
if (context != null && context.isValid) {
9393
return resolver.resolveReference(context)
9494
}
9595
return ResolveResult.EMPTY_ARRAY
9696
}
9797

9898
override fun getVariants(): Array<Any> {
9999
val context = element.findContextElement()
100-
if (context.isValid) {
101-
return resolver.collectVariants(element.findContextElement())
100+
if (context != null && context.isValid) {
101+
return resolver.collectVariants(context)
102102
}
103103
return ArrayUtil.EMPTY_OBJECT_ARRAY
104104
}
105105
}
106106
}
107107

108-
fun PsiElement.findContextElement(): PsiElement {
108+
fun PsiElement.findContextElement(): PsiElement? {
109109
var current: PsiElement
110110
var parent = this
111111

@@ -117,7 +117,7 @@ fun PsiElement.findContextElement(): PsiElement {
117117
}
118118
} while (parent is PsiExpression)
119119

120-
throw IllegalStateException("Cannot find context element of $this")
120+
return null
121121
}
122122

123123
/**
@@ -155,7 +155,7 @@ private class ReplaceElementWithLiteral(
155155
// Run command to replace PsiElement
156156
CommandProcessor.getInstance().runUndoTransparentAction {
157157
runWriteAction {
158-
val element = file.findElementAt(editor.caretModel.offset)!!.findContextElement()
158+
val element = file.findElementAt(editor.caretModel.offset)?.findContextElement() ?: return@runWriteAction
159159
val newElement = element.replace(
160160
JavaPsiFacade.getElementFactory(element.project).createExpressionFromText(
161161
"\"$text\"",

0 commit comments

Comments
 (0)