@@ -39,6 +39,7 @@ module FcsCheckerService =
3939type 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 =
8889type 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 ->
0 commit comments