@@ -742,7 +742,7 @@ type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyC
742
742
member bc.ParseAndCheckProject ( options , userOpName ) =
743
743
reactor.EnqueueAndAwaitOpAsync( userOpName, " ParseAndCheckProject" , options.ProjectFileName, fun ctok -> bc.ParseAndCheckProjectImpl( options, ctok, userOpName))
744
744
745
- member __.GetProjectOptionsFromScript ( filename , sourceText , loadedTimeStamp , otherFlags , useFsiAuxLib : bool option , useSdkRefs : bool option , assumeDotNetFramework : bool option , extraProjectInfo : obj option , optionsStamp : int64 option , userOpName ) =
745
+ member __.GetProjectOptionsFromScript ( filename , sourceText , previewEnabled , loadedTimeStamp , otherFlags , useFsiAuxLib : bool option , useSdkRefs : bool option , assumeDotNetFramework : bool option , extraProjectInfo : obj option , optionsStamp : int64 option , userOpName ) =
746
746
reactor.EnqueueAndAwaitOpAsync ( userOpName, " GetProjectOptionsFromScript" , filename, fun ctok ->
747
747
cancellable {
748
748
use errors = new ErrorScope()
@@ -751,10 +751,16 @@ type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyC
751
751
let useFsiAuxLib = defaultArg useFsiAuxLib true
752
752
let useSdkRefs = defaultArg useSdkRefs true
753
753
let reduceMemoryUsage = ReduceMemoryFlag.Yes
754
+ let previewEnabled = defaultArg previewEnabled false
754
755
755
756
// Do we assume .NET Framework references for scripts?
756
757
let assumeDotNetFramework = defaultArg assumeDotNetFramework true
757
- let otherFlags = defaultArg otherFlags [| |]
758
+ let extraFlags =
759
+ if previewEnabled then
760
+ [| " --langversion:preview" |]
761
+ else
762
+ [||]
763
+ let otherFlags = defaultArg otherFlags extraFlags
758
764
let useSimpleResolution =
759
765
#if ENABLE_ MONO_ SUPPORT
760
766
runningOnMono || otherFlags |> Array.exists ( fun x -> x = " --simpleresolution" )
@@ -1142,9 +1148,9 @@ type FSharpChecker(legacyReferenceResolver,
1142
1148
backgroundCompiler.ParseAndCheckProject( options, userOpName)
1143
1149
1144
1150
/// For a given script file, get the ProjectOptions implied by the #load closure
1145
- member __.GetProjectOptionsFromScript ( filename , source , ? loadedTimeStamp , ? otherFlags , ? useFsiAuxLib , ? useSdkRefs , ? assumeDotNetFramework , ? extraProjectInfo : obj , ? optionsStamp : int64 , ? userOpName : string ) =
1151
+ member __.GetProjectOptionsFromScript ( filename , source , ? previewEnabled , ? loadedTimeStamp , ? otherFlags , ? useFsiAuxLib , ? useSdkRefs , ? assumeDotNetFramework , ? extraProjectInfo : obj , ? optionsStamp : int64 , ? userOpName : string ) =
1146
1152
let userOpName = defaultArg userOpName " Unknown"
1147
- backgroundCompiler.GetProjectOptionsFromScript( filename, source, loadedTimeStamp, otherFlags, useFsiAuxLib, useSdkRefs, assumeDotNetFramework, extraProjectInfo, optionsStamp, userOpName)
1153
+ backgroundCompiler.GetProjectOptionsFromScript( filename, source, previewEnabled , loadedTimeStamp, otherFlags, useFsiAuxLib, useSdkRefs, assumeDotNetFramework, extraProjectInfo, optionsStamp, userOpName)
1148
1154
1149
1155
member __.GetProjectOptionsFromCommandLineArgs ( projectFileName , argv , ? loadedTimeStamp , ? extraProjectInfo : obj ) =
1150
1156
let loadedTimeStamp = defaultArg loadedTimeStamp DateTime.MaxValue // Not 'now', we don't want to force reloading
0 commit comments