Skip to content

Commit 1b745b3

Browse files
committed
fix(testing): wrap PSI operations in runReadAction
Ensure thread-safe access to PSI elements in JSAutoTestService by wrapping operations in runReadAction. Also cleanup whitespace in ChatContextProvider.
1 parent 3c391a1 commit 1b745b3

File tree

3 files changed

+4
-5
lines changed

3 files changed

+4
-5
lines changed

core/src/main/kotlin/cc/unitmesh/devti/provider/context/ChatContextProvider.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ interface ChatContextProvider {
2020
chatCreationContext: ChatCreationContext,
2121
): List<ChatContextItem> {
2222
val elements = mutableListOf<ChatContextItem>()
23-
23+
r
2424
val chatContextProviders = EP_NAME.extensionList
2525
for (provider in chatContextProviders) {
2626
try {

javascript/src/main/kotlin/cc/unitmesh/ide/javascript/provider/testing/JSAutoTestService.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class JSAutoTestService : AutoTestService() {
6161
return null
6262
}
6363

64-
val elementName = JSPsiUtil.elementName(elementToTest)
64+
val elementName = runReadAction { JSPsiUtil.elementName(elementToTest) }
6565
if (elementName == null) {
6666
log.warn("Failed to find element name for: $psiElement")
6767
return null
@@ -93,7 +93,7 @@ class JSAutoTestService : AutoTestService() {
9393
}
9494

9595
val imports: List<String> = (sourceFile as? JSFile)?.let {
96-
PsiTreeUtil.findChildrenOfType(it, JSImportStatement::class.java)
96+
runReadAction { PsiTreeUtil.findChildrenOfType(it, JSImportStatement::class.java) }
9797
}?.map {
9898
it.text
9999
} ?: emptyList()
@@ -159,7 +159,7 @@ class JSAutoTestService : AutoTestService() {
159159

160160
val containingFile: PsiFile = runReadAction { element.containingFile } ?: return null
161161
val extension = containingFile.virtualFile?.extension ?: return null
162-
val elementName = JSPsiUtil.elementName(element) ?: return null
162+
val elementName = runReadAction { JSPsiUtil.elementName(element) } ?: return null
163163
val testFile: Path = generateUniqueTestFile(elementName, containingFile, testDirectory, extension).toPath()
164164
return testFile
165165
}

javascript/src/main/kotlin/cc/unitmesh/ide/javascript/util/JSPsiUtil.kt

-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ object JSPsiUtil {
155155
fun elementName(psiElement: PsiElement): String? {
156156
if (psiElement !is JSVarStatement) {
157157
if (psiElement !is JSNamedElement) return null
158-
159158
return psiElement.name
160159
}
161160

0 commit comments

Comments
 (0)