Skip to content

Commit cce73c2

Browse files
committed
feat(cpp): add CppWriteTestService and CppContextPrettify modifications
- Add CppWriteTestService class for running CMakeTestRunConfiguration - Modify CppContextPrettify to import additional classes and symbols - Update CLionWorkspaceContextProvider to remove unused import - Update cc.unitmesh.cpp.xml to add CppWriteTestService as testContextProvider
1 parent 4b3588f commit cce73c2

File tree

4 files changed

+49
-10
lines changed

4 files changed

+49
-10
lines changed

cpp/src/main/kotlin/cc/unitmesh/cpp/provider/CLionWorkspaceContextProvider.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.intellij.execution.wsl.WslPath
77
import com.intellij.openapi.project.Project
88
import com.intellij.openapi.roots.ProjectRootManager
99
import com.intellij.openapi.vfs.VirtualFile
10-
import com.intellij.util.PlatformUtils
1110
import com.jetbrains.cidr.lang.OCLanguage
1211
import com.jetbrains.cidr.project.workspace.CidrWorkspace
1312

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cc.unitmesh.cpp.provider.testing
2+
3+
import cc.unitmesh.cpp.util.CppContextPrettify
4+
import cc.unitmesh.devti.context.ClassContext
5+
import cc.unitmesh.devti.provider.WriteTestService
6+
import cc.unitmesh.devti.provider.context.TestFileContext
7+
import com.intellij.execution.configurations.RunProfile
8+
import com.intellij.openapi.project.Project
9+
import com.intellij.psi.PsiElement
10+
import com.intellij.psi.PsiFile
11+
import com.jetbrains.cidr.cpp.execution.testing.CMakeTestRunConfiguration
12+
import com.jetbrains.cidr.lang.psi.OCFunctionDeclaration
13+
14+
class CppWriteTestService : WriteTestService() {
15+
override fun runConfigurationClass(project: Project): Class<out RunProfile> = CMakeTestRunConfiguration::class.java
16+
17+
override fun isApplicable(element: PsiElement): Boolean {
18+
return true
19+
}
20+
21+
override fun findOrCreateTestFile(sourceFile: PsiFile, project: Project, element: PsiElement): TestFileContext? {
22+
val currentClass = when (element) {
23+
is OCFunctionDeclaration -> {
24+
CppContextPrettify.printParentStructure(element)
25+
}
26+
27+
else -> null
28+
}
29+
val relatedClasses = lookupRelevantClass(project, element)
30+
31+
return TestFileContext(
32+
true,
33+
sourceFile.virtualFile,
34+
relatedClasses,
35+
"",
36+
sourceFile.language,
37+
currentClass,
38+
emptyList()
39+
)
40+
}
41+
42+
override fun lookupRelevantClass(project: Project, element: PsiElement): List<ClassContext> {
43+
TODO("Not yet implemented")
44+
}
45+
46+
}

cpp/src/main/kotlin/cc/unitmesh/cpp/util/CppContextPrettify.kt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,8 @@ import com.intellij.psi.PsiComment
44
import com.intellij.psi.PsiElement
55
import com.intellij.psi.PsiNameIdentifierOwner
66
import com.intellij.psi.util.PsiTreeUtil
7-
import com.jetbrains.cidr.lang.psi.OCFunctionDeclaration
8-
import com.jetbrains.cidr.lang.psi.OCDeclaration
9-
import com.jetbrains.cidr.lang.psi.OCStruct
10-
import com.jetbrains.cidr.lang.psi.OCStructLike
11-
import com.jetbrains.cidr.lang.psi.OCConceptDeclaration
12-
import com.jetbrains.cidr.lang.psi.OCTemplateArgumentList
13-
import com.jetbrains.cidr.lang.psi.OCTemplateParameterList
14-
import com.jetbrains.cidr.lang.symbols.OCResolveContext
7+
import com.jetbrains.cidr.lang.psi.*
8+
import com.jetbrains.cidr.lang.symbols.*
159

1610
object CppContextPrettify {
1711
/**

cpp/src/main/resources/cc.unitmesh.cpp.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<idea-plugin package="cc.unitmesh.cpp">
2-
<!--suppress PluginXmlValidity -->
32
<dependencies>
43
<plugin id="com.intellij.modules.clion"/>
54
</dependencies>
@@ -15,5 +14,6 @@
1514
implementationClass="cc.unitmesh.cpp.context.CppVariableContextBuilder"/>
1615

1716
<chatContextProvider implementation="cc.unitmesh.cpp.provider.CLionWorkspaceContextProvider"/>
17+
<testContextProvider language="ObjectiveC" implementation="cc.unitmesh.cpp.provider.testing.CppWriteTestService"/>
1818
</extensions>
1919
</idea-plugin>

0 commit comments

Comments
 (0)