Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync with the ultimate master #786

Merged
merged 4 commits into from
Dec 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
<ItemGroup>
<PackageLock Include="FSharp.Core" Version="9.0.100-beta.24466.6" />
<PackageLock Include="JetBrains.Annotations" Version="2024.3.0" />
<PackageLock Include="JetBrains.FSharp.Compiler.Service" Version="2024.3.1" />
<PackageLock Include="JetBrains.FSharp.Compiler.Service" Version="2024.3.2" />
<PackageLock Include="JetBrains.Lifetimes" Version="2024.3.0" />
<PackageLock Include="JetBrains.RdFramework" Version="2024.3.0" />
<PackageLock Include="Microsoft.NETCore.Platforms" Version="1.1.1" />
<PackageLock Include="Microsoft.NETCore.Targets" Version="1.1.3" />
<PackageLock Include="System.Diagnostics.Debug" Version="4.3.0" />
</ItemGroup>
</Project>
</Project>
2 changes: 1 addition & 1 deletion ReSharper.FSharp/src/FSharp/PackagesLock.targets
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<PackageLock Include="FSharp.Core" Version="9.0.100-beta.24466.6" />
<PackageLock Include="JetBrains.Annotations" Version="2024.3.0" />
<PackageLock Include="JetBrains.Build.Platform.DistributedCache" Version="1.1.20241202.225" />
<PackageLock Include="JetBrains.FSharp.Compiler.Service" Version="2024.3.1" />
<PackageLock Include="JetBrains.FSharp.Compiler.Service" Version="2024.3.2" />
<PackageLock Include="JetBrains.HabitatDetector" Version="1.4.3" />
<PackageLock Include="JetBrains.Lifetimes" Version="2024.3.0" />
<PackageLock Include="JetBrains.NuGet.Packaging" Version="6.12.20241210.146" />
Expand Down
4 changes: 2 additions & 2 deletions ReSharper.FSharp/test/src/PackagesLock.targets
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<ItemGroup>
<PackageLock Include="Fantomas.Core" Version="6.3.15" />
<PackageLock Include="FSharp.Core" Version="9.0.100-beta.24466.6" />
<PackageLock Include="JetBrains.FSharp.Compiler.Service" Version="2024.3.1" />
<PackageLock Include="JetBrains.FSharp.Compiler.Service" Version="2024.3.2" />
<PackageLock Include="JetBrains.Lifetimes" Version="2024.3.0" />
<PackageLock Include="JetBrains.NuGet.Frameworks" Version="6.12.20241210.146" />
<PackageLock Include="JetBrains.NuGet.Packaging" Version="6.12.20241210.146" />
Expand All @@ -21,4 +21,4 @@
<PackageLock Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
<PackageLock Include="System.Runtime.Loader" Version="4.3.0" />
</ItemGroup>
</Project>
</Project>
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.jetbrains.rider.plugins.fsharp.completion

import com.intellij.codeInsight.completion.CompletionInitializationContext
import com.intellij.openapi.editor.Editor
import com.intellij.psi.ElementManipulators
import com.intellij.psi.PsiFile
import com.intellij.psi.util.startOffset
import com.jetbrains.rdclient.document.editorSynchronizer
import com.jetbrains.rdclient.patches.isPatchEngineEnabled
import com.jetbrains.rider.completion.patchEngine.RiderPatchEngineCompletionContributor
import com.jetbrains.rider.completion.patchEngine.RiderPatchEngineProtocolProvider
Expand Down Expand Up @@ -37,8 +39,8 @@ class NuGetPatchEngineCompletionContributor : RiderPatchEngineCompletionContribu
val version = match.groups[GROUP_VERSION]
val versionZone = match.groups[GROUP_VERSION_ZONE]

prepareCustomParams(stringText, context.startOffset, KEY_NAME, `package`, packageZone, context)
|| prepareCustomParams(stringText, context.startOffset, "$KEY_VERSION|${`package`.value}", version!!, versionZone!!, context)
prepareCustomParams(stringText, context.startOffset, KEY_NAME, `package`, packageZone, context.editor)
|| prepareCustomParams(stringText, context.startOffset, "$KEY_VERSION|${`package`.value}", version!!, versionZone!!, context.editor)
}

private fun prepareCustomParams(
Expand All @@ -47,17 +49,19 @@ class NuGetPatchEngineCompletionContributor : RiderPatchEngineCompletionContribu
host: String,
strictGroup: MatchGroup,
zoneGroup: MatchGroup,
initContext: CompletionInitializationContext,
editor: Editor
): Boolean {
if (containsExclusive(strictGroup.range, cursorPosition)) {
val completionPrefix = content.substring(strictGroup.range.first, cursorPosition)
RiderPatchEngineProtocolProvider.Companion.getInstance().triggerCompletion(
initContext.project, initContext.editor, initContext.completionType, 1, completionPrefix, host)
RiderPatchEngineProtocolProvider.getInstance().customHostDocumentVersion = editor.editorSynchronizer?.version
RiderPatchEngineProtocolProvider.getInstance().customHost = host
RiderPatchEngineProtocolProvider.getInstance().customPrefix = completionPrefix
return true
}
else if (containsExclusive(zoneGroup.range, cursorPosition)) {
RiderPatchEngineProtocolProvider.Companion.getInstance().triggerCompletion(
initContext.project, initContext.editor, initContext.completionType, 1, "", host)
RiderPatchEngineProtocolProvider.getInstance().customHostDocumentVersion = editor.editorSynchronizer?.version
RiderPatchEngineProtocolProvider.getInstance().customHost = host
RiderPatchEngineProtocolProvider.getInstance().customPrefix = ""
return true
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ fun withSetting(project: Project, setting: String, enterValue: String, exitValue
}
}

context(SolutionApiFacade)
fun withDisabledOutOfProcessTypeProviders(function: () -> Unit) {
fun SolutionApiFacade.withDisabledOutOfProcessTypeProviders(function: () -> Unit) {
withSetting(
project,
"FSharp/FSharpOptions/FSharpExperimentalFeatures/OutOfProcessTypeProviders/@EntryValue",
Expand All @@ -51,8 +50,7 @@ fun withDisabledOutOfProcessTypeProviders(function: () -> Unit) {
}
}

context(SolutionApiFacade)
fun withNonFSharpProjectReferences(function: () -> Unit) {
fun SolutionApiFacade.withNonFSharpProjectReferences(function: () -> Unit) {
withSetting(project, "FSharp/FSharpOptions/NonFSharpProjectInMemoryReferences/@EntryValue", "true", "false") {
project.fcsHost.updateAssemblyReaderSettings.sync(Unit)
function()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,5 @@ class FSharpCompletionSpeculativeTest : FSharpCompletionTestBase(PatchEngineEdit

@Test
@TestEnvironment(sdkVersion = SdkVersion.LATEST_STABLE)
class FSharpCompletionSpeculativeAndForceRebaseTest : FSharpCompletionTestBase(PatchEngineEditorTestMode.SpeculativeAndForceRebase) {
init {
addMute(Mute("RIDER-116517"), ::`nuget reference - package name`)
addMute(Mute("RIDER-116517"), ::`nuget reference - replace whole package`)
addMute(Mute("RIDER-116517"), ::`nuget reference - version`)
}
}
@Mute("RIDER-116517")
class FSharpCompletionSpeculativeAndForceRebaseTest : FSharpCompletionTestBase(PatchEngineEditorTestMode.SpeculativeAndForceRebase)
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,22 @@ import com.jetbrains.rdclient.util.idea.waitAndPump
import com.jetbrains.rider.plugins.fsharp.test.fcsHost
import com.jetbrains.rider.test.annotations.TestEnvironment
import com.jetbrains.rider.test.asserts.shouldNotBeNull
import com.jetbrains.rider.test.base.BaseTestWithSolution
import com.jetbrains.rider.test.env.enums.SdkVersion
import com.jetbrains.rider.test.scriptingApi.changeFileContent
import com.jetbrains.rd.platform.util.lifetime
import com.jetbrains.rider.test.annotations.Mute
import com.jetbrains.rider.test.annotations.Solution
import com.jetbrains.rider.test.base.PerTestSolutionTestBase
import com.jetbrains.rider.test.enums.PlatformType
import org.testng.annotations.Test
import java.io.File
import java.time.Duration

@Test
@Solution("CoreConsoleApp")
@TestEnvironment(sdkVersion = SdkVersion.LATEST_STABLE)
class FileSystemShimTest : BaseTestWithSolution() {
override val testSolution: String = "CoreConsoleApp"

class FileSystemShimTest : PerTestSolutionTestBase() {
@Test
@Mute("RIDER-111885", platforms= [PlatformType.LINUX_ALL])
@Mute("RIDER-111885", platforms = [PlatformType.LINUX_ALL])
fun externalFileChange() {
val file = activeSolutionDirectory.resolve("Program.fs")
val stampBefore = getTimestamp(file)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,22 @@ import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil
import com.jetbrains.rider.editors.getPsiFile
import com.jetbrains.rider.test.annotations.Mute
import com.jetbrains.rider.test.annotations.Solution
import com.jetbrains.rider.test.annotations.TestEnvironment
import com.jetbrains.rider.test.base.BaseTestWithSolution
import com.jetbrains.rider.test.base.PerTestSolutionTestBase
import com.jetbrains.rider.test.enums.PlatformType
import com.jetbrains.rider.test.env.enums.SdkVersion
import com.jetbrains.rider.test.framework.executeWithGold
import com.jetbrains.rider.test.scriptingApi.getHighlighters
import com.jetbrains.rider.test.scriptingApi.typeFromOffset
import com.jetbrains.rider.test.scriptingApi.withOpenedEditor
import com.jetbrains.rider.test.scriptingApi.waitForDaemon
import com.jetbrains.rider.test.scriptingApi.withOpenedEditor
import org.testng.annotations.Test

@Test
@Solution("CoreConsoleApp")
@TestEnvironment(sdkVersion = SdkVersion.DOT_NET_6)
class InjectionEscapersTest : BaseTestWithSolution() {
override val testSolution: String = "CoreConsoleApp"

class InjectionEscapersTest : PerTestSolutionTestBase() {
private fun doTest(action: (EditorImpl, EditorImpl) -> Unit) {
withOpenedEditor("Program.fs", "Program.fs") {
waitForDaemon()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class FcsModuleReaderTest : ProjectModelBaseTest() {
expectedReferencedProjects: List<String>
) {
val project = project
withOpenedEditor(project, "FSharpProject/Library.fs") {
withOpenedEditor("FSharpProject/Library.fs") {
waitForNextDaemon()
assert(markupAdapter.hasErrors == hasErrors)
assertFcsStampAndReferencedProjectNames(this, expectedReferencedProjects)
Expand Down Expand Up @@ -150,7 +150,7 @@ class FcsModuleReaderTest : ProjectModelBaseTest() {

openFsFileDumpModuleReader(it, "2. Open F# file", false, listOf("CSharpProject"))

withOpenedEditor(project, "CSharpProject/Class1.cs") {
withOpenedEditor("CSharpProject/Class1.cs") {
typeFromOffset(" ", 75)
waitForNextDaemon()
}
Expand All @@ -170,7 +170,7 @@ class FcsModuleReaderTest : ProjectModelBaseTest() {

openFsFileDumpModuleReader(it, "8. Open F# file", false, listOf("CSharpProject"))

withOpenedEditor(project, "CSharpProject/Class1.cs") {
withOpenedEditor("CSharpProject/Class1.cs") {
typeFromOffset(" ", 75)
}

Expand Down Expand Up @@ -204,7 +204,7 @@ class FcsModuleReaderTest : ProjectModelBaseTest() {

openFsFileDumpModuleReader(it, "2. Open F# file", false, listOf("CSharpProject"))

withOpenedEditor(project, "CSharpProject/Class1.cs") {
withOpenedEditor("CSharpProject/Class1.cs") {
typeFromOffset(" ", 129)
}

Expand Down Expand Up @@ -244,7 +244,7 @@ class FcsModuleReaderTest : ProjectModelBaseTest() {
fun testGotoUsagesFromCSharp() {
withNonFSharpProjectReferences {
assertAllProjectsWereLoaded(project)
withOpenedEditor(project, "CSharpProject/Class1.cs", "Class1.cs") {
withOpenedEditor("CSharpProject/Class1.cs", "Class1.cs") {
waitForNextDaemon()
callAction(IdeActions.ACTION_GOTO_DECLARATION)
waitForEditorSwitch("Library.fs")
Expand All @@ -257,7 +257,7 @@ class FcsModuleReaderTest : ProjectModelBaseTest() {
fun testGotoUsagesFromCSharpChangeCSharp() {
withNonFSharpProjectReferences {
assertAllProjectsWereLoaded(project)
withOpenedEditor(project, "CSharpProject/Class1.cs", "Class1.cs") {
withOpenedEditor("CSharpProject/Class1.cs", "Class1.cs") {
typeWithLatency("1")
waitForNextDaemon()
callAction(IdeActions.ACTION_GOTO_DECLARATION)
Expand All @@ -272,13 +272,13 @@ class FcsModuleReaderTest : ProjectModelBaseTest() {
withNonFSharpProjectReferences {
assertAllProjectsWereLoaded(project)

withOpenedEditor(project, "FSharpProject/Library.fs") {
withOpenedEditor("FSharpProject/Library.fs") {
waitForNextDaemon()
}

waitForDaemonCloseAllOpenEditors(project)

withOpenedEditor(project, "CSharpProject/Class1.cs", "Class1.cs") {
withOpenedEditor("CSharpProject/Class1.cs", "Class1.cs") {
typeWithLatency("1")
waitForNextDaemon()
callAction(IdeActions.ACTION_GOTO_DECLARATION)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.jetbrains.rider.plugins.fsharp.test.cases.projectModel
import com.intellij.openapi.editor.impl.EditorImpl
import com.intellij.platform.backend.workspace.WorkspaceModel
import com.intellij.testFramework.ProjectViewTestUtil
import com.jetbrains.rider.test.scriptingApi.waitForDaemon
import com.jetbrains.rider.daemon.util.hasErrors
import com.jetbrains.rider.editors.getProjectModelId
import com.jetbrains.rider.plugins.fsharp.test.fcsHost
Expand All @@ -14,7 +13,7 @@ import com.jetbrains.rider.projectView.workspace.getProjectModelEntity
import com.jetbrains.rider.test.annotations.Mute
import com.jetbrains.rider.test.annotations.Solution
import com.jetbrains.rider.test.annotations.TestEnvironment
import com.jetbrains.rider.test.base.BaseTestWithSolution
import com.jetbrains.rider.test.base.PerTestSolutionTestBase
import com.jetbrains.rider.test.env.enums.SdkVersion
import com.jetbrains.rider.test.framework.assertAllProjectsWereLoaded
import com.jetbrains.rider.test.scriptingApi.*
Expand All @@ -23,9 +22,8 @@ import org.testng.annotations.BeforeMethod
import org.testng.annotations.Test
import kotlin.test.assertEquals

@Test
@TestEnvironment(sdkVersion = SdkVersion.LATEST_STABLE)
class FcsProjectProviderTest : BaseTestWithSolution() {
class FcsProjectProviderTest : PerTestSolutionTestBase() {
override val traceCategories
get() = super.traceCategories.plus("JetBrains.ReSharper.Plugins.FSharp.Checker.FcsProjectProvider")

Expand Down Expand Up @@ -54,7 +52,7 @@ class FcsProjectProviderTest : BaseTestWithSolution() {
hasErrors: Boolean,
expectedReferencedProjects: List<String>
) {
withOpenedEditor(project, fileName) {
withOpenedEditor(fileName) {
waitForDaemon()
project!!.fcsHost.dumpFcsModuleReader.sync(Unit)
assertEquals(hasErrors, markupAdapter.hasErrors)
Expand All @@ -63,6 +61,7 @@ class FcsProjectProviderTest : BaseTestWithSolution() {
}

@Solution("ProjectReferencesFSharp")
@Test
fun projectReferencesFSharp() {
assertAllProjectsWereLoaded(project)
assertHasErrorsAndProjectStampAndReferences("ReferenceFrom/Library.fs", true, emptyList())
Expand All @@ -87,6 +86,7 @@ class FcsProjectProviderTest : BaseTestWithSolution() {
}

@Mute("Broken after ProjectModelMonitor refactoring")
@Test
@Solution("ProjectReferencesCSharp")
fun projectReferencesCSharp() {
withNonFSharpProjectReferences {
Expand Down Expand Up @@ -120,8 +120,9 @@ class FcsProjectProviderTest : BaseTestWithSolution() {
}
}

@Solution("ProjectReferencesCSharp")
@Mute("RIDER-100270 Need to somehow set setting before solution load")
@Test
@Solution("ProjectReferencesCSharp")
fun projectReferencesCSharpNoModuleReader() {
assertAllProjectsWereLoaded(project)
assertHasErrorsAndProjectStampAndReferences("FSharpProject/Library.fs", true, emptyList())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
package com.jetbrains.rider.plugins.fsharp.test.cases.projectModel

import com.jetbrains.rider.plugins.fsharp.test.fcsHost
import com.jetbrains.rider.test.OpenSolutionParams
import com.jetbrains.rider.test.annotations.Solution
import com.jetbrains.rider.test.annotations.TestEnvironment
import com.jetbrains.rider.test.base.BaseTestWithSolution
import com.jetbrains.rider.test.base.PerTestSolutionTestBase
import com.jetbrains.rider.test.env.enums.SdkVersion
import org.testng.annotations.Test

@Test
@Solution("ReferencesOrder")
@TestEnvironment(sdkVersion = SdkVersion.DOT_NET_6)
class ReferencesOrder : BaseTestWithSolution() {
override val testSolution = "ReferencesOrder"

override val waitForCaches = true
override val restoreNuGetPackages = true
class ReferencesOrder : PerTestSolutionTestBase() {
override fun modifyOpenSolutionParams(params: OpenSolutionParams) {
params.waitForCaches = true
params.restoreNuGetPackages = true
}

@Test()
@Test
fun testReferencesOrder() {
val references = project.fcsHost.dumpSingleProjectLocalReferences.sync(Unit)
assert(references == listOf("Library1.dll", "Library2.dll"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@ import com.jetbrains.rd.platform.diagnostics.LogTraceScenario
import com.jetbrains.rider.plugins.fsharp.logs.FSharpLogTraceScenarios
import com.jetbrains.rider.plugins.fsharp.rdFSharpModel
import com.jetbrains.rider.projectView.solution
import com.jetbrains.rider.test.base.BaseTestWithSolution
import com.jetbrains.rider.test.OpenSolutionParams
import com.jetbrains.rider.test.base.PerTestSolutionTestBase

abstract class BaseTypeProvidersTest : PerTestSolutionTestBase() {
override fun modifyOpenSolutionParams(params: OpenSolutionParams) {
params.restoreNuGetPackages = true
}

abstract class BaseTypeProvidersTest : BaseTestWithSolution() {
override val restoreNuGetPackages = true
override val traceScenarios: Set<LogTraceScenario>
get() = super.traceScenarios + FSharpLogTraceScenarios.FSharpTypeProviders

Expand Down
Loading
Loading