@@ -56,16 +56,16 @@ abstract class ReferenceResolver : PsiReferenceProvider() {
56
56
57
57
override fun resolve (): PsiElement ? {
58
58
val context = element.findContextElement()
59
- if (context.isValid) {
59
+ if (context != null && context .isValid) {
60
60
return resolver.resolveReference(context)
61
61
}
62
62
return null
63
63
}
64
64
65
65
override fun getVariants (): Array <Any > {
66
66
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 )
69
69
}
70
70
return ArrayUtil .EMPTY_OBJECT_ARRAY
71
71
}
@@ -89,23 +89,23 @@ abstract class PolyReferenceResolver : PsiReferenceProvider() {
89
89
90
90
override fun multiResolve (incompleteCode : Boolean ): Array <ResolveResult > {
91
91
val context = element.findContextElement()
92
- if (context.isValid) {
92
+ if (context != null && context .isValid) {
93
93
return resolver.resolveReference(context)
94
94
}
95
95
return ResolveResult .EMPTY_ARRAY
96
96
}
97
97
98
98
override fun getVariants (): Array <Any > {
99
99
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 )
102
102
}
103
103
return ArrayUtil .EMPTY_OBJECT_ARRAY
104
104
}
105
105
}
106
106
}
107
107
108
- fun PsiElement.findContextElement (): PsiElement {
108
+ fun PsiElement.findContextElement (): PsiElement ? {
109
109
var current: PsiElement
110
110
var parent = this
111
111
@@ -117,7 +117,7 @@ fun PsiElement.findContextElement(): PsiElement {
117
117
}
118
118
} while (parent is PsiExpression )
119
119
120
- throw IllegalStateException ( " Cannot find context element of $this " )
120
+ return null
121
121
}
122
122
123
123
/* *
@@ -155,7 +155,7 @@ private class ReplaceElementWithLiteral(
155
155
// Run command to replace PsiElement
156
156
CommandProcessor .getInstance().runUndoTransparentAction {
157
157
runWriteAction {
158
- val element = file.findElementAt(editor.caretModel.offset)!! .findContextElement()
158
+ val element = file.findElementAt(editor.caretModel.offset)? .findContextElement() ? : return @runWriteAction
159
159
val newElement = element.replace(
160
160
JavaPsiFacade .getElementFactory(element.project).createExpressionFromText(
161
161
" \" $text \" " ,
0 commit comments