Skip to content

Commit 7303448

Browse files
committed
After call
1 parent b135692 commit 7303448

File tree

9 files changed

+384
-363
lines changed

9 files changed

+384
-363
lines changed

ReSharper.FSharp/src/FSharp/FSharp.Common/src/Checker/FcsCheckerService.fs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ module FcsCheckerService =
3939
type FcsProject =
4040
{ OutputPath: VirtualFileSystemPath
4141
ProjectOptions: FSharpProjectOptions
42+
ProjectSnapshot: FSharpProjectSnapshot option
4243
ParsingOptions: FSharpParsingOptions
4344
FileIndices: IDictionary<VirtualFileSystemPath, int>
4445
ImplementationFilesWithSignatures: ISet<VirtualFileSystemPath>
@@ -88,25 +89,27 @@ type FcsProjectInvalidationType =
8889
type FcsCheckerService(lifetime: Lifetime, logger: ILogger, onSolutionCloseNotifier: OnSolutionCloseNotifier,
8990
settingsStore: ISettingsStore, locks: IShellLocks, configurations: RunsProducts.ProductConfigurations) =
9091

91-
let checker =
92-
Environment.SetEnvironmentVariable("FCS_CheckFileInProjectCacheSize", "20")
93-
94-
let settingsStoreLive = settingsStore.BindToContextLive(lifetime, ContextRange.ApplicationWide)
92+
let settingsStoreLive = settingsStore.BindToContextLive(lifetime, ContextRange.ApplicationWide)
9593

96-
let getSettingProperty name =
97-
let setting = SettingsUtil.getEntry<FSharpOptions> settingsStore name
98-
settingsStoreLive.GetValueProperty(lifetime, setting, null)
94+
let getSettingProperty name =
95+
let setting = SettingsUtil.getEntry<FSharpOptions> settingsStore name
96+
settingsStoreLive.GetValueProperty(lifetime, setting, null)
9997

98+
let useTransparentCompiler = (getSettingProperty "UseTransparentCompiler").Value
99+
100+
let checker =
101+
Environment.SetEnvironmentVariable("FCS_CheckFileInProjectCacheSize", "20")
100102
let skipImpl = getSettingProperty "SkipImplementationAnalysis"
101103
let analyzerProjectReferencesInParallel = getSettingProperty "ParallelProjectReferencesAnalysis"
102-
104+
103105
lazy
104106
let checker =
105107
FSharpChecker.Create(projectCacheSize = 200,
106108
keepAllBackgroundResolutions = false,
107109
keepAllBackgroundSymbolUses = false,
108110
enablePartialTypeChecking = skipImpl.Value,
109-
parallelReferenceResolution = analyzerProjectReferencesInParallel.Value)
111+
parallelReferenceResolution = analyzerProjectReferencesInParallel.Value,
112+
useTransparentCompiler = useTransparentCompiler)
110113

111114
checker
112115

@@ -156,11 +159,15 @@ type FcsCheckerService(lifetime: Lifetime, logger: ILogger, onSolutionCloseNotif
156159
| Some(parseResults, checkResults) -> Some({ ParseResults = parseResults; CheckResults = checkResults })
157160
| _ ->
158161

162+
163+
159164
ProhibitTypeCheckCookie.AssertTypeCheckIsAllowed()
160165
locks.AssertReadAccessAllowed()
161166
x.AssertFcsAccessThread()
162167

163168
let psiModule = sourceFile.PsiModule
169+
// check if is active ...
170+
if useTransparentCompiler then ()
164171
match x.FcsProjectProvider.GetFcsProject(psiModule) with
165172
| None -> None
166173
| Some fcsProject ->

ReSharper.FSharp/src/FSharp/FSharp.Common/src/Checker/FcsProjectProvider.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,8 @@ type FcsProjectProvider(lifetime: Lifetime, solution: ISolution, changeManager:
285285
match scriptFcsProjectProvider.GetScriptOptions(sourceFile) with
286286
| None -> None
287287
| Some projectOptions ->
288+
289+
// let snapshot = FSharpProjectSnapshot.FromOptions projectOptions
288290

289291
let parsingOptions =
290292
{ FSharpParsingOptions.Default with

ReSharper.FSharp/src/FSharp/FSharp.Common/src/Settings/FSharpOptions.fs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ module FSharpOptions =
2929
let [<Literal>] nonFSharpProjectInMemoryReferences = "Analyze C# and VB.NET project references in-memory"
3030
let [<Literal>] outOfScopeCompletion = "Enable out of scope items completion"
3131
let [<Literal>] topLevelOpenCompletion = "Add 'open' declarations to top level module or namespace"
32+
let [<Literal>] useTransparentCompilerDescription = "Use TransparentCompiler"
3233

3334

3435
[<SettingsKey(typeof<FSharpSettings>, "FSharpOptions")>]
@@ -46,7 +47,10 @@ type FSharpOptions =
4647
mutable EnableOutOfScopeCompletion: bool
4748

4849
[<SettingsEntry(true, topLevelOpenCompletion); DefaultValue>]
49-
mutable TopLevelOpenCompletion: bool }
50+
mutable TopLevelOpenCompletion: bool
51+
52+
[<SettingsEntry(false, useTransparentCompilerDescription)>]
53+
mutable UseTransparentCompiler: bool }
5054

5155
type FantomasLocationSettings =
5256
| AutoDetected = 0
@@ -154,6 +158,9 @@ type FSharpOptionsProvider(lifetime, solution, settings, settingsSchema) =
154158

155159
member val NonFSharpProjectInMemoryReferences =
156160
base.GetValueProperty<bool>("NonFSharpProjectInMemoryReferences").Value with get, set
161+
162+
member val UseTransparentCompiler =
163+
base.GetValueProperty<bool>("UseTransparentCompiler").Value
157164

158165
member this.UpdateAssemblyReaderSetting() =
159166
this.NonFSharpProjectInMemoryReferences <-
@@ -210,6 +217,7 @@ type FSharpOptionsPage(lifetime: Lifetime, optionsPageContext, settings,
210217
this.AddBoolOptionWithComment((fun key -> key.SkipImplementationAnalysis), skipImplementationAnalysis, "Requires restart") |> ignore
211218
this.AddBoolOptionWithComment((fun key -> key.ParallelProjectReferencesAnalysis), parallelProjectReferencesAnalysis, "Requires restart") |> ignore
212219
this.AddBoolOptionWithComment((fun key -> key.OutOfProcessTypeProviders), FSharpExperimentalFeatures.outOfProcessTypeProviders, "Requires restart") |> ignore
220+
this.AddBoolOptionWithComment((fun key -> key.UseTransparentCompiler), useTransparentCompilerDescription, "Requires restart") |> ignore
213221

214222
do
215223
use indent = this.Indent()

0 commit comments

Comments
 (0)