File tree Expand file tree Collapse file tree 3 files changed +13
-4
lines changed
java/src/main/kotlin/cc/unitmesh/idea Expand file tree Collapse file tree 3 files changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ import com.intellij.openapi.project.Project
10
10
import com.intellij.psi.PsiClass
11
11
import com.intellij.psi.PsiElement
12
12
import com.intellij.psi.PsiMethod
13
+ import org.jetbrains.kotlin.idea.util.application.runReadAction
13
14
14
15
open class JavaTestContextProvider : ChatContextProvider {
15
16
override fun isApplicable (project : Project , creationContext : ChatCreationContext ): Boolean {
@@ -26,7 +27,7 @@ open class JavaTestContextProvider : ChatContextProvider {
26
27
val isController = fileName?.let { MvcUtil .isController(it, langFileSuffix()) } ? : false
27
28
val isService = fileName?.let { MvcUtil .isService(it, langFileSuffix()) } ? : false
28
29
29
- val isSpringRelated = creationContext.element?.let { isSpringRelated(it) } ? : false
30
+ val isSpringRelated = runReadAction { creationContext.element?.let { isSpringRelated(it) } ? : false }
30
31
31
32
var baseTestPrompt = """
32
33
|You MUST use should_xx_xx style for test method name.
Original file line number Diff line number Diff line change @@ -63,8 +63,12 @@ object JavaRelatedContext {
63
63
}
64
64
65
65
private fun findSuperClasses (psiClass : PsiClass ): List <PsiClass > {
66
- if (! isProjectContent(psiClass)) return emptyList()
67
- return generateSequence(psiClass) { it.superClass }.toList()
66
+ val superClass = psiClass.superClass ? : return emptyList()
67
+ if (isProjectContent(superClass)) {
68
+ return listOf (psiClass.superClass!! )
69
+ }
70
+
71
+ return emptyList()
68
72
}
69
73
70
74
private fun canBeRemoved (member : PsiMember ): Boolean {
@@ -90,7 +94,7 @@ object JavaRelatedContext {
90
94
return projectContentClasses.toList()
91
95
}
92
96
93
- private fun isProjectContent (element : PsiElement ): Boolean {
97
+ fun isProjectContent (element : PsiElement ): Boolean {
94
98
val virtualFile = PsiUtil .getVirtualFile(element)
95
99
return virtualFile == null || ProjectFileIndex .getInstance(element.project).isInContent(virtualFile)
96
100
}
Original file line number Diff line number Diff line change @@ -47,6 +47,10 @@ object JavaTypeUtil {
47
47
it.type is PsiClassReferenceType
48
48
}.map {
49
49
val resolve = (it.type as PsiClassReferenceType ).resolve() ? : return @map null
50
+ if (! JavaRelatedContext .isProjectContent(resolve)) {
51
+ return @map null
52
+ }
53
+
50
54
resolvedClasses[it.name] = JavaRelatedContext .cleanUp(resolve)
51
55
}
52
56
You can’t perform that action at this time.
0 commit comments