Skip to content

Commit bae71e3

Browse files
committed
chore(rust): split for support old version Rust
1 parent 4287a07 commit bae71e3

File tree

5 files changed

+54
-10
lines changed

5 files changed

+54
-10
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
22
propertiesPluginEnvironmentNameProperty=platformVersion
33
# Supported platforms: 222, 233
4-
platformVersion=233
4+
platformVersion=222
55

66
pluginGroup = com.phodal.autodev
77
pluginName = AutoDev
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package cc.unitmesh.rust.context
2+
3+
import cc.unitmesh.devti.context.ClassContext
4+
import cc.unitmesh.devti.context.builder.ClassContextBuilder
5+
import com.intellij.psi.PsiElement
6+
import com.intellij.psi.util.PsiTreeUtil
7+
import org.rust.lang.core.psi.RsEnumItem
8+
import org.rust.lang.core.psi.RsFunction
9+
import org.rust.lang.core.psi.RsImplItem
10+
import org.rust.lang.core.psi.RsStructItem
11+
import org.rust.lang.core.psi.ext.RsStructOrEnumItemElement
12+
import org.rust.lang.core.psi.ext.expandedFields
13+
14+
class RustClassContextBuilder : ClassContextBuilder {
15+
override fun getClassContext(psiElement: PsiElement, gatherUsages: Boolean): ClassContext? {
16+
if (psiElement !is RsStructOrEnumItemElement) return null
17+
18+
when (psiElement) {
19+
is RsStructItem -> {
20+
val fields: List<PsiElement> = psiElement.expandedFields
21+
22+
val impls = PsiTreeUtil.getChildrenOfTypeAsList(psiElement.containingFile, RsImplItem::class.java)
23+
val functions = impls.filter { it.name == psiElement.name }
24+
.flatMap { PsiTreeUtil.getChildrenOfTypeAsList(it, RsFunction::class.java) }
25+
26+
return ClassContext(
27+
psiElement,
28+
psiElement.text,
29+
psiElement.name,
30+
functions,
31+
fields,
32+
emptyList(),
33+
emptyList(),
34+
psiElement.name
35+
)
36+
}
37+
38+
is RsEnumItem -> {
39+
// TODO: Implement
40+
}
41+
}
42+
43+
return null
44+
}
45+
}

rust/src/test/kotlin/cc/unitmesh/rust/context/RustClassContextBuilderTest.kt renamed to rust/src/233/test/kotlin/cc/unitmesh/rust/context/RustClassContextBuilderTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cc.unitmesh.rust.context;
1+
package cc.unitmesh.rust.context
22

33
import com.intellij.openapi.application.ApplicationManager
44
import com.intellij.openapi.extensions.ExtensionPoint
@@ -8,7 +8,7 @@ import org.rust.lang.core.psi.RsStructItem
88

99
class RustClassContextBuilderTest: BasePlatformTestCase() {
1010

11-
fun shouldFormatStruct() {
11+
fun testShouldFormatStruct() {
1212
// given
1313
val code = myFixture.configureByText(
1414
"test.rs", """

rust/src/test/kotlin/cc/unitmesh/rust/context/RustMethodContextBuilderTest.kt renamed to rust/src/233/test/kotlin/cc/unitmesh/rust/context/RustMethodContextBuilderTest.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cc.unitmesh.rust.context;
1+
package cc.unitmesh.rust.context
22

33
import com.intellij.psi.util.PsiTreeUtil
44
import com.intellij.testFramework.fixtures.BasePlatformTestCase
@@ -8,7 +8,7 @@ import org.rust.lang.core.psi.RsMembers
88

99
class RustMethodContextBuilderTest : BasePlatformTestCase() {
1010

11-
fun shouldFormatMethodStruct() {
11+
fun testShouldFormatMethodStruct() {
1212
// given
1313
val psiFile = myFixture.configureByText(
1414
"test.rs", """
@@ -40,11 +40,10 @@ class RustMethodContextBuilderTest : BasePlatformTestCase() {
4040
assertEquals("new", result.name)
4141
assertEquals(
4242
result.format(), """
43-
'package: Entry
44-
class Entry {
45-
46-
47-
}
43+
path: /src/test.rs
44+
language: Rust
45+
fun name: new
46+
fun signature: function
4847
""".trimIndent()
4948
)
5049
}

0 commit comments

Comments
 (0)