@@ -22,10 +22,10 @@ package com.demonwav.mcdev.util
2222
2323import com.demonwav.mcdev.platform.mixin.handlers.desugar.DesugarUtil
2424import com.intellij.codeInsight.daemon.impl.quickfix.AddMethodFix
25- import com.intellij.navigation.AnonymousElementProvider
2625import com.intellij.openapi.project.Project
2726import com.intellij.psi.CommonClassNames
2827import com.intellij.psi.JavaPsiFacade
28+ import com.intellij.psi.JavaRecursiveElementVisitor
2929import com.intellij.psi.JavaRecursiveElementWalkingVisitor
3030import com.intellij.psi.PsiAnonymousClass
3131import com.intellij.psi.PsiClass
@@ -153,7 +153,7 @@ fun findQualifiedClass(
153153 return outerResolver(fullQualifiedName)
154154 }
155155
156- var currentClass = outerResolver(fullQualifiedName.substring( 0 , innerPos)) ? : return null
156+ var currentClass = outerResolver(fullQualifiedName.take( innerPos)) ? : return null
157157 var outerPos: Int
158158
159159 while (true ) {
@@ -183,8 +183,8 @@ private fun PsiClass.findInnerClass(name: String): PsiClass? {
183183 null
184184 }
185185 } else {
186- if (innerIndex > 0 && innerIndex <= anonymousElements .size) {
187- anonymousElements [innerIndex - 1 ] as PsiClass
186+ if (innerIndex > 0 && innerIndex <= anonymousClasses .size) {
187+ anonymousClasses [innerIndex - 1 ]
188188 } else {
189189 null
190190 }
@@ -194,9 +194,9 @@ private fun PsiClass.findInnerClass(name: String): PsiClass? {
194194
195195@Throws(ClassNameResolutionFailedException ::class )
196196@PublishedApi
197- internal fun PsiElement .getAnonymousIndex (anonymousElement : PsiElement ): Int {
197+ internal fun PsiClass .getAnonymousIndex (anonymousElement : PsiElement ): Int {
198198 // Attempt to find name for anonymous class
199- for ((i, element) in anonymousElements .withIndex()) {
199+ for ((i, element) in anonymousClasses .withIndex()) {
200200 if (element equivalentTo anonymousElement) {
201201 return i + 1
202202 }
@@ -205,16 +205,22 @@ internal fun PsiElement.getAnonymousIndex(anonymousElement: PsiElement): Int {
205205 throw ClassNameResolutionFailedException (" Failed to determine anonymous class for $anonymousElement " )
206206}
207207
208- val PsiElement .anonymousElements : Array < PsiElement >
208+ val PsiClass .anonymousClasses : List < PsiAnonymousClass >
209209 get() {
210- for (provider in AnonymousElementProvider .EP_NAME .extensionList) {
211- val elements = provider.getAnonymousElements(this )
212- if (elements.isNotEmpty()) {
213- return elements
210+ val list = mutableListOf<PsiAnonymousClass >()
211+
212+ acceptChildren(object : JavaRecursiveElementVisitor () {
213+ override fun visitClass (aClass : PsiClass ) {
214+ // skip inner classes
214215 }
215- }
216216
217- return emptyArray()
217+ override fun visitAnonymousClass (aClass : PsiAnonymousClass ) {
218+ aClass.argumentList?.accept(this )
219+ list + = aClass
220+ }
221+ })
222+
223+ return list
218224 }
219225
220226@Throws(ClassNameResolutionFailedException ::class )
0 commit comments