@@ -10,33 +10,31 @@ object JavaTypeUtil {
1010 fun resolveByType (outputType : PsiType ? ): Map <String , PsiClass > {
1111 val resolvedClasses = mutableMapOf<String , PsiClass >()
1212 if (outputType is PsiClassReferenceType ) {
13- val resolveClz = outputType.resolve()
14-
15- outputType.parameters.filterIsInstance<PsiClassReferenceType >().forEach {
16- val resolve = it.resolve()
17- if (resolve != null ) {
18- resolvedClasses[it.canonicalText] = resolve
19- }
20-
21- it.parameters.map { argType ->
22- if (argType is PsiClassReferenceType ) {
23- val resolvedArgType = argType.resolve()
24- if (resolvedArgType != null ) {
25- resolvedClasses[argType.canonicalText] = resolvedArgType
26- }
27- }
28- }
13+ resolvedClasses.putAll(resolveTypeReferences(outputType))
14+ }
15+
16+ return resolvedClasses.filter { isProjectContent(it.value) }.toMap()
17+ }
18+
19+ private fun resolveTypeReferences (outputType : PsiClassReferenceType ): MutableMap <String , PsiClass > {
20+ val resolvedClasses = mutableMapOf<String , PsiClass >()
21+
22+ fun resolveRecursively (type : PsiClassReferenceType ) {
23+ val resolvedClass = type.resolve()
24+ if (resolvedClass != null ) {
25+ resolvedClasses[type.canonicalText] = resolvedClass
2926 }
3027
31- val canonicalText = outputType.canonicalText
32- if (resolveClz != null ) {
33- resolvedClasses[canonicalText] = resolveClz
28+ type.parameters.filterIsInstance<PsiClassReferenceType >().forEach { childType ->
29+ resolveRecursively(childType)
3430 }
3531 }
3632
37- return resolvedClasses.filter { isProjectContent(it.value) }.toMap()
33+ resolveRecursively(outputType)
34+ return resolvedClasses
3835 }
3936
37+
4038 fun resolveByField (element : PsiElement ): Map <String , PsiClass > {
4139 val psiFile = element.containingFile as PsiJavaFile
4240
0 commit comments