Skip to content

Commit 78352f5

Browse files
committed
build(262): enable jetbrains-rider for 2026.2 GA
1 parent 41f3192 commit 78352f5

10 files changed

Lines changed: 79 additions & 25 deletions

File tree

‎buildSrc/src/main/kotlin/software/aws/toolkits/gradle/intellij/IdeVersions.kt‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,14 +152,11 @@ object IdeVersions {
152152
)
153153
),
154154
rider = RiderProfile(
155-
// Rider 2026.2 is still pre-release (RC1) with a closed-source backend API that shifted; the
156-
// jetbrains-rider module is excluded from the 2026.2 build in settings.gradle.kts, so this entry
157-
// is currently unused. Re-enable the module and switch to "2026.2" / "2026.2.0" once Rider GAs.
158-
sdkVersion = "2026.2-RC1-SNAPSHOT",
155+
sdkVersion = "2026.2",
159156
bundledPlugins = commonPlugins,
160157
netFrameworkTarget = "net472",
161-
rdGenVersion = "2026.2.4",
162-
nugetVersion = "2026.2.0-eap06"
158+
rdGenVersion = "2026.2.5",
159+
nugetVersion = "2026.2.0"
163160
)
164161
)
165162
).associateBy { it.name }

‎buildSrc/src/main/kotlin/toolkit-intellij-subplugin.gradle.kts‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,23 @@ configurations {
9292
exclude(group = "bundledPlugin", module = "org.jetbrains.idea.maven")
9393
exclude(group = "bundledPlugin", module = "com.intellij.gradle")
9494
exclude(group = "bundledPlugin", module = "com.intellij.properties")
95-
exclude(group = "bundledModule")
95+
// jcef became a bundled plugin the community/ultimate profiles depend on (2026.2); it leaks
96+
// transitively via jetbrains-community testFixtures and can't resolve as IU against the RD/GW SDK
97+
exclude(group = "bundledPlugin", module = "com.intellij.modules.jcef")
98+
if (project.name.contains("jetbrains-rider")) {
99+
// Rider needs its own RD-flavored bundled modules (declared in its build.gradle.kts for 2026.2)
100+
// on the test classpath, so we can't blanket-exclude the group. Instead drop only the modules
101+
// that leak transitively from jetbrains-community/-core and resolve with IU coordinates.
102+
listOf(
103+
"intellij.platform.collaborationTools",
104+
"intellij.platform.collaborationTools.auth",
105+
"intellij.platform.collaborationTools.auth.base",
106+
"intellij.platform.vcs.dvcs.impl",
107+
"intellij.libraries.microba",
108+
).forEach { exclude(group = "bundledModule", module = it) }
109+
} else {
110+
exclude(group = "bundledModule")
111+
}
96112
}
97113
}
98114
}

‎plugins/toolkit/jetbrains-rider/build.gradle.kts‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ dependencies {
7878
"2025.1, 2025.3" -> {
7979
bundledModule("intellij.rider")
8080
}
81+
// 2026.2 split the Rider backend/rd-client APIs (Solution/workspace model, LifetimedProjectComponent,
82+
// RdDispatcher, CSharpLanguage, project-model extensions) into productModuleV2 modules that are no longer
83+
// on the default compile classpath, so declare them explicitly. Symbols are unchanged from 2026.1.
84+
"2026.2" -> {
85+
bundledModule("intellij.rider")
86+
bundledModule("intellij.rider.rdclient.dotnet")
87+
bundledModule("intellij.rider.languages")
88+
bundledModule("intellij.rd.client")
89+
bundledModule("intellij.rd.client.base")
90+
}
8191
}
8292
}
8393

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Copyright 2026 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.utils
5+
6+
import com.intellij.openapi.project.Project
7+
import com.jetbrains.rider.projectView.solutionDirectory
8+
9+
// Pre-2026.2: debugProgramAfterAttach's gold-file parameter is a java.io.File.
10+
internal fun goldFile(project: Project, name: String) = project.solutionDirectory.resolve(name)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Copyright 2026 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.utils
5+
6+
import com.intellij.openapi.project.Project
7+
import com.jetbrains.rider.projectView.solutionDirectoryPath
8+
9+
// 2026.2+: debugProgramAfterAttach's gold-file parameter is a java.nio.file.Path (was java.io.File before).
10+
internal fun goldFile(project: Project, name: String) = project.solutionDirectoryPath.resolve(name)

‎plugins/toolkit/jetbrains-rider/it/software/aws/toolkits/jetbrains/utils/RiderTestUtils.kt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import com.intellij.xdebugger.XDebugSession
1818
import com.intellij.xdebugger.XDebuggerManager
1919
import com.intellij.xdebugger.XDebuggerManagerListener
2020
import com.jetbrains.rdclient.util.idea.waitAndPump
21-
import com.jetbrains.rider.projectView.solutionDirectory
2221
import com.jetbrains.rider.test.scriptingApi.DebugTestExecutionContext
2322
import com.jetbrains.rider.test.scriptingApi.debugProgramAfterAttach
2423
import com.jetbrains.rider.test.scriptingApi.dumpFullCurrentData
@@ -103,7 +102,8 @@ fun executeRunConfigurationAndWaitRider(runConfiguration: RunConfiguration, exec
103102
resumeSession()
104103
}
105104

106-
debugProgramAfterAttach(session.get(), runConfiguration.project.solutionDirectory.resolve("expected.gold"), waitAndTest, true)
105+
// goldFile() is version-split: debugProgramAfterAttach's gold-file param is File pre-262, Path in 262+
106+
debugProgramAfterAttach(session.get(), goldFile(runConfiguration.project, "expected.gold"), waitAndTest, true)
107107

108108
return executionFuture.get()
109109
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Copyright 2026 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package base
5+
6+
import com.intellij.openapi.project.Project
7+
import com.jetbrains.rider.projectView.solutionDirectory
8+
import com.jetbrains.rider.test.scriptingApi.getVirtualFileFromPath
9+
10+
// Pre-2026.2: getVirtualFileFromPath's base-dir parameter is a java.io.File, which is what solutionDirectory returns.
11+
internal fun solutionFunctionFile(project: Project) =
12+
getVirtualFileFromPath("src/HelloWorld/Function.cs", project.solutionDirectory)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Copyright 2026 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package base
5+
6+
import com.intellij.openapi.project.Project
7+
import com.jetbrains.rider.projectView.solutionDirectoryPath
8+
import com.jetbrains.rider.test.scriptingApi.getVirtualFileFromPath
9+
10+
// 2026.2+: getVirtualFileFromPath's base-dir parameter is a java.nio.file.Path (was java.io.File before).
11+
internal fun solutionFunctionFile(project: Project) =
12+
getVirtualFileFromPath("src/HelloWorld/Function.cs", project.solutionDirectoryPath)

‎plugins/toolkit/jetbrains-rider/tst/base/AwsReuseSolutionTestBase.kt‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33

44
package base
55

6-
import com.jetbrains.rider.projectView.solutionDirectory
76
import com.jetbrains.rider.test.debugger.XDebuggerTestHelper
8-
import com.jetbrains.rider.test.scriptingApi.getVirtualFileFromPath
97
/**
108
* Base test class that uses the same solution per test class.
119
* Solution re-open logic takes time. We can avoid this by using the same solution instance per every test in a class
@@ -20,8 +18,9 @@ abstract class AwsReuseSolutionTestBase : BaseTestWithSolution() {
2018
// https://github.com/JetBrains/fsharp-support/blob/93ab17493a34a0bc0fd4c70b11adde02f81455c4/rider-fsharp/src/test/kotlin/debugger/AsyncDebuggerTest.kt#L6
2119
// Unlike our other projects we do not have a document to work with, so there might not be a nice way to do it.
2220
fun setBreakpoint(line: Int = 15) {
23-
// Same as com.jetbrains.rider.test.scriptingApi.toggleBreakpoint, but with the correct base directory
24-
XDebuggerTestHelper.toggleBreakpoint(project, getVirtualFileFromPath("src/HelloWorld/Function.cs", project.solutionDirectory), line - 1)
21+
// Same as com.jetbrains.rider.test.scriptingApi.toggleBreakpoint, but with the correct base directory.
22+
// solutionFunctionFile() is version-split (getVirtualFileFromPath's base-dir param is File pre-262, Path in 262+).
23+
XDebuggerTestHelper.toggleBreakpoint(project, solutionFunctionFile(project), line - 1)
2524
}
2625

2726
override val backendLoadedTimeout = backendStartTimeout

‎settings.gradle.kts‎

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -176,18 +176,6 @@ file("plugins").listFiles()?.forEach root@ {
176176
}
177177
}
178178

179-
if (it.name == "jetbrains-rider") {
180-
when (providers.gradleProperty("ideProfileName").get()) {
181-
// Rider 2026.2 is still pre-release (RC1) with a closed-source backend API that shifted
182-
// significantly (solution/workspace model, language registration, RdDispatcher, etc.) -
183-
// deferred to a follow-up PR once the API stabilizes at GA. Other 2026.2 flavors (IU/IC)
184-
// already compile cleanly.
185-
"2026.2" -> {
186-
return@forEach
187-
}
188-
}
189-
}
190-
191179
val projectName = path.joinToString(separator = ":", prefix = ":")
192180
include(projectName)
193181
project(projectName).projectDir = it

0 commit comments

Comments
 (0)