Skip to content

Commit 303b03f

Browse files
committed
Initial support for 243
1 parent 9f9880f commit 303b03f

File tree

10 files changed

+290
-7
lines changed

10 files changed

+290
-7
lines changed

.github/workflows/build-plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
strategy:
2929
fail-fast: true
3030
matrix:
31-
platform-version: [ 241, 242 ]
31+
platform-version: [ 241, 242, 243 ]
3232
env:
3333
ORG_GRADLE_PROJECT_buildNumber: ${{ needs.generate-build-number.outputs.build_number }}
3434
ORG_GRADLE_PROJECT_platformVersion: ${{ matrix.platform-version }}

.github/workflows/check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ jobs:
8282
# Make sequence from two outputs with version is not possible here.
8383
rust-version: ${{ fromJSON(needs.get-rust-versions.outputs.matrix) }}
8484
base-ide: [ IU ]
85-
platform-version: [ 241, 242 ]
85+
platform-version: [ 241, 242, 243 ]
8686
# it's enough to verify plugin structure only once per platform version
8787
verify-plugin: [ false ]
8888
default-edition-for-tests: [ 2021 ]

build.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ val copyrightPlugin: String by project
3434
val javaPlugin = "com.intellij.java"
3535
val javaIdePlugin = "com.intellij.java.ide"
3636
val javaScriptPlugin = "JavaScript"
37+
val jsonPlugin = "com.intellij.modules.json"
3738
val mlCompletionPlugin = "com.intellij.completion.ml.ranking"
3839

3940
val compileNativeCodeTaskName = "compileNativeCode"
@@ -196,6 +197,11 @@ allprojects {
196197

197198
pluginVerifier()
198199
instrumentationTools()
200+
// BACKCOMPAT: 2024.2. Always include jsonPlugin.
201+
// Also move rust-toml.xml with explicit dependency on JSON plugin back to src.
202+
if (baseVersion.startsWith("243.") || baseVersion.startsWith("2024.3")) {
203+
bundledPlugin(jsonPlugin)
204+
}
199205

200206
// used in MacroExpansionManager.kt and ResolveCommonThreadPool.kt
201207
testFramework(TestFrameworkType.Platform, configurationName = Configurations.INTELLIJ_PLATFORM_DEPENDENCIES)

gradle-243.properties

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Existent IDE versions can be found in the following repos:
2+
# https://www.jetbrains.com/intellij-repository/releases/
3+
# https://www.jetbrains.com/intellij-repository/snapshots/
4+
ideaVersion=243.12818.47
5+
6+
# https://plugins.jetbrains.com/plugin/8195-toml/versions
7+
tomlPlugin=org.toml.lang:243.12818.56
8+
# https://plugins.jetbrains.com/plugin/12175-grazie-lite/versions
9+
graziePlugin=tanvd.grazi:242.20224.155
10+
# https://plugins.jetbrains.com/plugin/227-psiviewer/versions
11+
psiViewerPlugin=PsiViewer:243.7768
12+
# https://plugins.jetbrains.com/plugin/13114-copyright/versions
13+
copyrightPlugin=com.intellij.copyright:242.20224.237
14+
15+
# please see https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description
16+
sinceBuild=243
17+
untilBuild=243.*

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
propertiesPluginEnvironmentNameProperty=platformVersion
2-
# Supported platforms: 241, 242
2+
# Supported platforms: 241, 242, 243
33
platformVersion=242
44
# Supported IDEs: IU
55
baseIDE=IU
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
<idea-plugin>
2+
<extensions defaultExtensionNs="com.intellij">
3+
<psi.referenceContributor language="TOML"
4+
implementation="org.rust.toml.resolve.CargoTomlReferenceContributor"/>
5+
<psi.referenceContributor language="Rust"
6+
implementation="org.rust.toml.resolve.RsCargoTomlIntegrationReferenceContributor"/>
7+
<completion.contributor language="TOML"
8+
implementationClass="org.rust.toml.completion.CargoTomlCompletionContributor"/>
9+
<completion.contributor language="Rust"
10+
implementationClass="org.rust.toml.completion.RsCargoTomlIntegrationCompletionContributor"/>
11+
<codeInsight.lineMarkerProvider language="TOML"
12+
implementationClass="org.rust.toml.CargoCrateDocLineMarkerProvider"/>
13+
<codeInsight.lineMarkerProvider language="TOML"
14+
implementationClass="org.rust.toml.CargoFeatureLineMarkerProvider"/>
15+
<codeInsight.gotoSuper language="TOML" implementationClass="org.rust.toml.CargoTomlGotoSuperHandler"/>
16+
17+
<findUsagesHandlerFactory implementation="org.rust.toml.search.CargoTomlFindUsagesHandlerFactory"/>
18+
<usageTypeProvider implementation="org.rust.toml.search.CargoTomlUsageTypeProvider"/>
19+
<elementDescriptionProvider implementation="org.rust.toml.CargoTomlElementDescriptionProvider"/>
20+
21+
<!--suppress PluginXmlExtensionRegistration -->
22+
<localInspection groupKey="rust"
23+
enabledByDefault="true" level="WARNING"
24+
implementationClass="org.rust.toml.inspections.MissingFeaturesInspection"
25+
key="inspection.missing.features.display.name" bundle="messages.RsBundle"/>
26+
27+
<localInspection language="TOML"
28+
groupPath="Rust"
29+
groupKey="cargo.toml"
30+
enabledByDefault="true"
31+
level="ERROR"
32+
implementationClass="org.rust.toml.inspections.CargoTomlCyclicFeatureInspection"
33+
key="inspection.cargo.toml.cyclic.feature.display.name" bundle="messages.RsBundle"/>
34+
<localInspection language="TOML"
35+
groupPath="Rust"
36+
groupKey="cargo.toml"
37+
enabledByDefault="true"
38+
level="WARNING"
39+
implementationClass="org.rust.toml.inspections.CrateNotFoundInspection"
40+
key="inspection.crate.not.found.display.name" bundle="messages.RsBundle"/>
41+
42+
<localInspection language="TOML"
43+
groupPath="Rust"
44+
groupKey="cargo.toml"
45+
enabledByDefault="true"
46+
level="WARNING"
47+
implementationClass="org.rust.toml.inspections.CrateVersionInvalidInspection"
48+
key="inspection.crate.version.invalid.display.name" bundle="messages.RsBundle"/>
49+
<localInspection language="TOML"
50+
groupPath="Rust"
51+
groupKey="cargo.toml"
52+
enabledByDefault="true"
53+
level="WARNING"
54+
implementationClass="org.rust.toml.inspections.NewCrateVersionAvailableInspection"
55+
key="inspection.new.crate.version.available.display.name" bundle="messages.RsBundle"/>
56+
<localInspection language="TOML"
57+
groupPath="Rust"
58+
groupKey="cargo.toml"
59+
enabledByDefault="true"
60+
level="ERROR"
61+
implementationClass="org.rust.toml.inspections.TomlInvalidKeywordSegmentInspection"
62+
key="inspection.toml.invalid.keyword.segment.display.name" bundle="messages.RsBundle"/>
63+
64+
65+
<localInspection language="TOML"
66+
key="inspection.duplicated.key.display.name" bundle="messages.RsBundle"
67+
groupPath="Rust"
68+
groupKey="cargo.toml"
69+
enabledByDefault="true"
70+
level="ERROR"
71+
implementationClass="org.rust.toml.inspections.TomlDuplicatedKeyInspection"/>
72+
73+
<intentionAction>
74+
<bundleName>messages.RsBundle</bundleName>
75+
<className>org.rust.toml.intentions.ExpandDependencySpecificationIntention</className>
76+
<categoryKey>rust.cargo.toml</categoryKey>
77+
<language>TOML</language>
78+
</intentionAction>
79+
80+
<intentionAction>
81+
<bundleName>messages.RsBundle</bundleName>
82+
<className>org.rust.toml.intentions.SimplifyDependencySpecificationIntention</className>
83+
<categoryKey>rust.cargo.toml</categoryKey>
84+
<language>TOML</language>
85+
</intentionAction>
86+
87+
<applicationService serviceInterface="org.rust.toml.crates.local.CratesLocalIndexService"
88+
serviceImplementation="org.rust.toml.crates.local.CratesLocalIndexServiceImpl"
89+
testServiceImplementation="org.rust.toml.crates.local.TestCratesLocalIndexServiceImpl"/>
90+
91+
<cachesInvalidator implementation="org.rust.toml.crates.local.CratesLocalIndexCachesInvalidator"/>
92+
93+
<vfs.asyncListener implementation="org.rust.toml.crates.local.CratesLocalIndexVfsListener"/>
94+
95+
<registryKey key="org.rust.crates.local.index.update.interval" defaultValue="60"
96+
description="Interval between crates.io index updates in minutes"/>
97+
</extensions>
98+
99+
<extensions defaultExtensionNs="JavaScript">
100+
<JsonSchema.ProviderFactory implementation="org.rust.toml.jsonSchema.CargoTomlJsonSchemaProviderFactory"/>
101+
</extensions>
102+
103+
<projectListeners>
104+
<listener class="org.rust.toml.crates.local.CratesLocalIndexWaker"
105+
topic="org.rust.cargo.project.model.CargoProjectsService$CargoProjectsListener" />
106+
</projectListeners>
107+
</idea-plugin>
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
<idea-plugin>
2+
<depends>com.intellij.modules.json</depends>
3+
4+
<extensions defaultExtensionNs="com.intellij">
5+
<psi.referenceContributor language="TOML"
6+
implementation="org.rust.toml.resolve.CargoTomlReferenceContributor"/>
7+
<psi.referenceContributor language="Rust"
8+
implementation="org.rust.toml.resolve.RsCargoTomlIntegrationReferenceContributor"/>
9+
<completion.contributor language="TOML"
10+
implementationClass="org.rust.toml.completion.CargoTomlCompletionContributor"/>
11+
<completion.contributor language="Rust"
12+
implementationClass="org.rust.toml.completion.RsCargoTomlIntegrationCompletionContributor"/>
13+
<codeInsight.lineMarkerProvider language="TOML"
14+
implementationClass="org.rust.toml.CargoCrateDocLineMarkerProvider"/>
15+
<codeInsight.lineMarkerProvider language="TOML"
16+
implementationClass="org.rust.toml.CargoFeatureLineMarkerProvider"/>
17+
<codeInsight.gotoSuper language="TOML" implementationClass="org.rust.toml.CargoTomlGotoSuperHandler"/>
18+
19+
<findUsagesHandlerFactory implementation="org.rust.toml.search.CargoTomlFindUsagesHandlerFactory"/>
20+
<usageTypeProvider implementation="org.rust.toml.search.CargoTomlUsageTypeProvider"/>
21+
<elementDescriptionProvider implementation="org.rust.toml.CargoTomlElementDescriptionProvider"/>
22+
23+
<!--suppress PluginXmlExtensionRegistration -->
24+
<localInspection groupKey="rust"
25+
enabledByDefault="true" level="WARNING"
26+
implementationClass="org.rust.toml.inspections.MissingFeaturesInspection"
27+
key="inspection.missing.features.display.name" bundle="messages.RsBundle"/>
28+
29+
<localInspection language="TOML"
30+
groupPath="Rust"
31+
groupKey="cargo.toml"
32+
enabledByDefault="true"
33+
level="ERROR"
34+
implementationClass="org.rust.toml.inspections.CargoTomlCyclicFeatureInspection"
35+
key="inspection.cargo.toml.cyclic.feature.display.name" bundle="messages.RsBundle"/>
36+
<localInspection language="TOML"
37+
groupPath="Rust"
38+
groupKey="cargo.toml"
39+
enabledByDefault="true"
40+
level="WARNING"
41+
implementationClass="org.rust.toml.inspections.CrateNotFoundInspection"
42+
key="inspection.crate.not.found.display.name" bundle="messages.RsBundle"/>
43+
44+
<localInspection language="TOML"
45+
groupPath="Rust"
46+
groupKey="cargo.toml"
47+
enabledByDefault="true"
48+
level="WARNING"
49+
implementationClass="org.rust.toml.inspections.CrateVersionInvalidInspection"
50+
key="inspection.crate.version.invalid.display.name" bundle="messages.RsBundle"/>
51+
<localInspection language="TOML"
52+
groupPath="Rust"
53+
groupKey="cargo.toml"
54+
enabledByDefault="true"
55+
level="WARNING"
56+
implementationClass="org.rust.toml.inspections.NewCrateVersionAvailableInspection"
57+
key="inspection.new.crate.version.available.display.name" bundle="messages.RsBundle"/>
58+
<localInspection language="TOML"
59+
groupPath="Rust"
60+
groupKey="cargo.toml"
61+
enabledByDefault="true"
62+
level="ERROR"
63+
implementationClass="org.rust.toml.inspections.TomlInvalidKeywordSegmentInspection"
64+
key="inspection.toml.invalid.keyword.segment.display.name" bundle="messages.RsBundle"/>
65+
66+
67+
<localInspection language="TOML"
68+
key="inspection.duplicated.key.display.name" bundle="messages.RsBundle"
69+
groupPath="Rust"
70+
groupKey="cargo.toml"
71+
enabledByDefault="true"
72+
level="ERROR"
73+
implementationClass="org.rust.toml.inspections.TomlDuplicatedKeyInspection"/>
74+
75+
<intentionAction>
76+
<bundleName>messages.RsBundle</bundleName>
77+
<className>org.rust.toml.intentions.ExpandDependencySpecificationIntention</className>
78+
<categoryKey>rust.cargo.toml</categoryKey>
79+
<language>TOML</language>
80+
</intentionAction>
81+
82+
<intentionAction>
83+
<bundleName>messages.RsBundle</bundleName>
84+
<className>org.rust.toml.intentions.SimplifyDependencySpecificationIntention</className>
85+
<categoryKey>rust.cargo.toml</categoryKey>
86+
<language>TOML</language>
87+
</intentionAction>
88+
89+
<applicationService serviceInterface="org.rust.toml.crates.local.CratesLocalIndexService"
90+
serviceImplementation="org.rust.toml.crates.local.CratesLocalIndexServiceImpl"
91+
testServiceImplementation="org.rust.toml.crates.local.TestCratesLocalIndexServiceImpl"/>
92+
93+
<cachesInvalidator implementation="org.rust.toml.crates.local.CratesLocalIndexCachesInvalidator"/>
94+
95+
<vfs.asyncListener implementation="org.rust.toml.crates.local.CratesLocalIndexVfsListener"/>
96+
97+
<registryKey key="org.rust.crates.local.index.update.interval" defaultValue="60"
98+
description="Interval between crates.io index updates in minutes"/>
99+
</extensions>
100+
101+
<extensions defaultExtensionNs="JavaScript">
102+
<JsonSchema.ProviderFactory implementation="org.rust.toml.jsonSchema.CargoTomlJsonSchemaProviderFactory"/>
103+
</extensions>
104+
105+
<projectListeners>
106+
<listener class="org.rust.toml.crates.local.CratesLocalIndexWaker"
107+
topic="org.rust.cargo.project.model.CargoProjectsService$CargoProjectsListener" />
108+
</projectListeners>
109+
</idea-plugin>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Use of this source code is governed by the MIT license that can be
3+
* found in the LICENSE file.
4+
*/
5+
6+
package org.rust
7+
8+
import com.intellij.ide.util.treeView.smartTree.Sorter
9+
import com.intellij.openapi.actionSystem.DataContext
10+
import com.intellij.platform.navbar.NavBarItemPresentationData
11+
import com.intellij.platform.navbar.backend.NavBarItem
12+
import com.intellij.platform.navbar.backend.impl.pathToItem
13+
import com.intellij.util.concurrency.annotations.RequiresReadLock
14+
import org.jetbrains.annotations.TestOnly
15+
16+
// BACKCOMPAT 2024.1: use directly in RsCombinedVisibilityAlphaSorterTest
17+
val alphaSorterId = Sorter.getAlphaSorterId()
18+
19+
// BACKCOMPAT 2024.1: move to RsNavBarTest
20+
@Suppress("UnstableApiUsage")
21+
@TestOnly
22+
@RequiresReadLock
23+
fun contextNavBarPathStrings(ctx: DataContext): List<String> {
24+
// Navigation bar implementation was split into several modules, which made `navbar.testFramework` test scope only.
25+
//
26+
// See https://youtrack.jetbrains.com/issue/IJPL-850/Split-navigation-bar-implementation-into-several-modules,
27+
// https://github.com/JetBrains/intellij-community/commit/a9e1406257b330d17d2a3f78f47b2d2113eca97c and
28+
// https://github.com/JetBrains/intellij-community/commit/bfa6619891699658f86a7bf8bdf7726a67bc6efd
29+
30+
// Code copied from [platform/navbar/testFramework/src/testFramework.kt](https://github.com/JetBrains/intellij-community/blob/d161fd043392998e10c4551df92634dbda5a06b5/platform/navbar/testFramework/src/testFramework.kt#L34).
31+
val contextItem = NavBarItem.NAVBAR_ITEM_KEY.getData(ctx)
32+
?.dereference()
33+
?: return emptyList()
34+
return contextItem.pathToItem().map {
35+
(it.presentation() as NavBarItemPresentationData).text
36+
}
37+
}
38+
39+
// BACKCOMPAT 2024.1: unwrap to contextNavBarPathStrings
40+
fun contextNavBarPathStringsCompat(ctx: DataContext): List<String> {
41+
return contextNavBarPathStrings(ctx)
42+
}

src/main/kotlin/org/rust/ide/newProject/RsProjectGeneratorPeer.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ class RsProjectGeneratorPeer(cargoProjectDir: Path = Paths.get(".")) : Generator
2222

2323
override fun getSettings(): ConfigurationData = newProjectPanel.data
2424

25-
override fun getComponent(myLocationField: TextFieldWithBrowseButton, checkValid: Runnable): JComponent {
26-
this.checkValid = checkValid
27-
return super.getComponent(myLocationField, checkValid)
28-
}
25+
// BACKCOMPAT: 2024.3 EAP. Restore later.
26+
// https://github.com/JetBrains/intellij-community/commit/d1635e67b01e4448ab8b4abb923321296147a40b
27+
// override fun getComponent(myLocationField: TextFieldWithBrowseButton, checkValid: Runnable): JComponent {
28+
// this.checkValid = checkValid
29+
// return super.getComponent(myLocationField, checkValid)
30+
// }
2931

3032
override fun getComponent(): JComponent = panel {
3133
newProjectPanel.attachTo(this)

0 commit comments

Comments
 (0)