From 7d96373deb94b0b438d8cd37e32fd10dbc21253a Mon Sep 17 00:00:00 2001 From: Zero King Date: Wed, 25 Sep 2024 21:04:52 +0800 Subject: [PATCH] Initial support for 243 --- .github/workflows/build-plugin.yml | 2 +- .github/workflows/check.yml | 2 +- build.gradle.kts | 30 +++++++++++-- gradle-243.properties | 15 +++++++ gradle.properties | 2 +- src/243/test/kotlin/org/rust/TestCompat.kt | 42 +++++++++++++++++++ .../buildtool/RsBuildTaskProvider.kt | 2 +- src/main/resources/META-INF/rust-toml.xml | 2 + 8 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 gradle-243.properties create mode 100644 src/243/test/kotlin/org/rust/TestCompat.kt diff --git a/.github/workflows/build-plugin.yml b/.github/workflows/build-plugin.yml index 1d1c59cacc..4c68101737 100644 --- a/.github/workflows/build-plugin.yml +++ b/.github/workflows/build-plugin.yml @@ -28,7 +28,7 @@ jobs: strategy: fail-fast: true matrix: - platform-version: [ 241, 242 ] + platform-version: [ 241, 242, 243 ] env: ORG_GRADLE_PROJECT_buildNumber: ${{ needs.generate-build-number.outputs.build_number }} ORG_GRADLE_PROJECT_platformVersion: ${{ matrix.platform-version }} diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 8e49f97c1c..c905be4eeb 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -82,7 +82,7 @@ jobs: # Make sequence from two outputs with version is not possible here. rust-version: ${{ fromJSON(needs.get-rust-versions.outputs.matrix) }} base-ide: [ IU ] - platform-version: [ 241, 242 ] + platform-version: [ 241, 242, 243 ] # it's enough to verify plugin structure only once per platform version verify-plugin: [ false ] default-edition-for-tests: [ 2021 ] diff --git a/build.gradle.kts b/build.gradle.kts index f9aaccc360..1e944525a9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -26,6 +26,7 @@ val ideToRun = prop("ideToRun").ifEmpty { baseIDE } val ideaVersion = prop("ideaVersion") val baseVersion = versionForIde(baseIDE) val baseVersionForRun = versionForIde(ideToRun) +val useInstaller = !baseVersion.contains("-EAP-") val tomlPlugin: String by project val graziePlugin: String by project @@ -34,6 +35,7 @@ val copyrightPlugin = "com.intellij.copyright" val javaPlugin = "com.intellij.java" val javaIdePlugin = "com.intellij.java.ide" val javaScriptPlugin = "JavaScript" +val jsonPlugin = "com.intellij.modules.json" val mlCompletionPlugin = "com.intellij.completion.ml.ranking" val compileNativeCodeTaskName = "compileNativeCode" @@ -72,6 +74,9 @@ allprojects { mavenCentral() intellijPlatform { defaultRepositories() + if (!useInstaller) { + jetbrainsRuntime() + } } } @@ -192,10 +197,18 @@ allprojects { dependencies { intellijPlatform { - create(baseIDE, baseVersion) + create(baseIDE, baseVersion, useInstaller) + if (!useInstaller) { + jetbrainsRuntime() + } pluginVerifier() instrumentationTools() + // BACKCOMPAT: 2024.2. Always include jsonPlugin. + // Also move rust-toml.xml with explicit dependency on JSON plugin back to src. + if (baseVersion.startsWith("243.") || baseVersion.startsWith("2024.3")) { + bundledPlugin(jsonPlugin) + } // used in MacroExpansionManager.kt and ResolveCommonThreadPool.kt testFramework(TestFrameworkType.Platform, configurationName = Configurations.INTELLIJ_PLATFORM_DEPENDENCIES) @@ -304,7 +317,10 @@ project(":plugin") { javaPlugin, ) } - create(baseIDE, baseVersionForRun) + create(baseIDE, baseVersionForRun, useInstaller) + if (!useInstaller) { + jetbrainsRuntime() + } plugins(pluginList) bundledPlugins(bundledPluginList) @@ -474,7 +490,10 @@ project(":") { project(":idea") { dependencies { intellijPlatform { - create(baseIDE, baseVersion) + create(baseIDE, baseVersion, useInstaller) + if (!useInstaller) { + jetbrainsRuntime() + } bundledPlugins(listOf( javaPlugin, @@ -491,7 +510,10 @@ project(":idea") { project(":copyright") { dependencies { intellijPlatform { - create(baseIDE, baseVersion) + create(baseIDE, baseVersion, useInstaller) + if (!useInstaller) { + jetbrainsRuntime() + } bundledPlugins(listOf(copyrightPlugin)) } diff --git a/gradle-243.properties b/gradle-243.properties new file mode 100644 index 0000000000..f536877dbc --- /dev/null +++ b/gradle-243.properties @@ -0,0 +1,15 @@ +# Existent IDE versions can be found in the following repos: +# https://www.jetbrains.com/intellij-repository/releases/ +# https://www.jetbrains.com/intellij-repository/snapshots/ +ideaVersion=243.16718-EAP-CANDIDATE-SNAPSHOT + +# https://plugins.jetbrains.com/plugin/8195-toml/versions +tomlPlugin=org.toml.lang:243.15521.25 +# https://plugins.jetbrains.com/plugin/12175-grazie-lite/versions +graziePlugin=tanvd.grazi:243.15521.28 +# https://plugins.jetbrains.com/plugin/227-psiviewer/versions +psiViewerPlugin=PsiViewer:243.7768 + +# please see https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description +sinceBuild=243 +untilBuild=243.* diff --git a/gradle.properties b/gradle.properties index 9812039c9a..53e3a34806 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ propertiesPluginEnvironmentNameProperty=platformVersion -# Supported platforms: 241, 242 +# Supported platforms: 241, 242, 243 platformVersion=242 # Supported IDEs: IU baseIDE=IU diff --git a/src/243/test/kotlin/org/rust/TestCompat.kt b/src/243/test/kotlin/org/rust/TestCompat.kt new file mode 100644 index 0000000000..bd430f5afb --- /dev/null +++ b/src/243/test/kotlin/org/rust/TestCompat.kt @@ -0,0 +1,42 @@ +/* + * Use of this source code is governed by the MIT license that can be + * found in the LICENSE file. + */ + +package org.rust + +import com.intellij.ide.util.treeView.smartTree.Sorter +import com.intellij.openapi.actionSystem.DataContext +import com.intellij.platform.navbar.NavBarItemPresentationData +import com.intellij.platform.navbar.backend.NavBarItem +import com.intellij.platform.navbar.backend.impl.pathToItem +import com.intellij.util.concurrency.annotations.RequiresReadLock +import org.jetbrains.annotations.TestOnly + +// BACKCOMPAT 2024.1: use directly in RsCombinedVisibilityAlphaSorterTest +val alphaSorterId = Sorter.getAlphaSorterId() + +// BACKCOMPAT 2024.1: move to RsNavBarTest +@Suppress("UnstableApiUsage") +@TestOnly +@RequiresReadLock +fun contextNavBarPathStrings(ctx: DataContext): List { + // Navigation bar implementation was split into several modules, which made `navbar.testFramework` test scope only. + // + // See https://youtrack.jetbrains.com/issue/IJPL-850/Split-navigation-bar-implementation-into-several-modules, + // https://github.com/JetBrains/intellij-community/commit/a9e1406257b330d17d2a3f78f47b2d2113eca97c and + // https://github.com/JetBrains/intellij-community/commit/bfa6619891699658f86a7bf8bdf7726a67bc6efd + + // Code copied from [platform/navbar/testFramework/src/testFramework.kt](https://github.com/JetBrains/intellij-community/blob/d161fd043392998e10c4551df92634dbda5a06b5/platform/navbar/testFramework/src/testFramework.kt#L34). + val contextItem = NavBarItem.NAVBAR_ITEM_KEY.getData(ctx) + ?.dereference() + ?: return emptyList() + return contextItem.pathToItem().map { + (it.presentation() as NavBarItemPresentationData).text + } +} + +// BACKCOMPAT 2024.1: unwrap to contextNavBarPathStrings +fun contextNavBarPathStringsCompat(ctx: DataContext): List { + return contextNavBarPathStrings(ctx) +} diff --git a/src/main/kotlin/org/rust/cargo/runconfig/buildtool/RsBuildTaskProvider.kt b/src/main/kotlin/org/rust/cargo/runconfig/buildtool/RsBuildTaskProvider.kt index ca675b0560..11b0396593 100644 --- a/src/main/kotlin/org/rust/cargo/runconfig/buildtool/RsBuildTaskProvider.kt +++ b/src/main/kotlin/org/rust/cargo/runconfig/buildtool/RsBuildTaskProvider.kt @@ -28,7 +28,7 @@ abstract class RsBuildTaskProvider> : Befor val result = CompletableFuture() ProjectTaskManager.getInstance(environment.project).build(buildableElement).onProcessed { - result.complete(!it.hasErrors() && !it.isAborted) + result.complete(it != null && !it.hasErrors() && !it.isAborted) } return result.get() } diff --git a/src/main/resources/META-INF/rust-toml.xml b/src/main/resources/META-INF/rust-toml.xml index 278bd893da..53c561e03f 100644 --- a/src/main/resources/META-INF/rust-toml.xml +++ b/src/main/resources/META-INF/rust-toml.xml @@ -1,4 +1,6 @@ + com.intellij.modules.json +