@@ -29,7 +29,8 @@ type ParseResults (optimizedProject: Lazy<Project>,
2929 unoptimizedProject: Lazy< Project>,
3030 parseFileResultsOpt: FSharpParseFileResults option,
3131 checkFileResultsOpt: FSharpCheckFileResults option,
32- checkProjectResults: FSharpCheckProjectResults) =
32+ checkProjectResults: FSharpCheckProjectResults,
33+ otherFSharpOptions: string[]) =
3334
3435 member __.GetProject ( optimized : bool ) =
3536 if optimized
@@ -41,6 +42,7 @@ type ParseResults (optimizedProject: Lazy<Project>,
4142 member __.CheckProjectResults = checkProjectResults
4243
4344 interface IParseResults with
45+ member __.OtherFSharpOptions = otherFSharpOptions
4446 member __.Errors = checkProjectResults.Errors |> Array.map mapError
4547
4648let inline private tryGetLexerSymbolIslands ( sym : Lexer.LexerSymbol ) =
@@ -104,12 +106,12 @@ let convertGlyph glyph =
104106 | FSharpGlyph.Event ->
105107 Glyph.Event
106108
107- let makeProjOptions projectFileName fileNames =
109+ let makeProjOptions projectFileName fileNames otherFSharpOptions =
108110 let projOptions : FSharpProjectOptions =
109111 { ProjectFileName = projectFileName
110112 ProjectId = None
111113 SourceFiles = fileNames
112- OtherOptions = [| |]
114+ OtherOptions = otherFSharpOptions
113115 ReferencedProjects = [| |]
114116 IsIncompleteTypeCheckEnvironment = false
115117 UseScriptResolutionRules = false
@@ -131,27 +133,27 @@ let makeProject projectOptions (projectResults: FSharpCheckProjectResults) optim
131133 implFiles |> Seq.map ( fun file -> Fable.Path.normalizePathAndEnsureFsExtension file.FileName, file) |> dict
132134 Project( projectOptions, implFilesMap, projectResults.Errors)
133135
134- let parseFSharpScript ( checker : InteractiveChecker ) projectFileName fileName source =
136+ let parseFSharpScript ( checker : InteractiveChecker ) projectFileName fileName source otherFSharpOptions =
135137 let parseResults , checkResults , projectResults =
136138 checker.ParseAndCheckScript ( projectFileName, fileName, source)
137- let projectOptions = makeProjOptions projectFileName [| fileName |]
139+ let projectOptions = makeProjOptions projectFileName [| fileName |] otherFSharpOptions
138140 let optimizedProject = lazy ( makeProject projectOptions projectResults true )
139141 let unoptimizedProject = lazy ( makeProject projectOptions projectResults false )
140- ParseResults ( optimizedProject, unoptimizedProject, Some parseResults, Some checkResults, projectResults)
142+ ParseResults ( optimizedProject, unoptimizedProject, Some parseResults, Some checkResults, projectResults, otherFSharpOptions )
141143
142- let parseFSharpProject ( checker : InteractiveChecker ) projectFileName fileNames sources =
144+ let parseFSharpProject ( checker : InteractiveChecker ) projectFileName fileNames sources otherFSharpOptions =
143145 let projectResults = checker.ParseAndCheckProject ( projectFileName, fileNames, sources)
144- let projectOptions = makeProjOptions projectFileName fileNames
146+ let projectOptions = makeProjOptions projectFileName fileNames otherFSharpOptions
145147 let optimizedProject = lazy ( makeProject projectOptions projectResults true )
146148 let unoptimizedProject = lazy ( makeProject projectOptions projectResults false )
147- ParseResults ( optimizedProject, unoptimizedProject, None, None, projectResults)
149+ ParseResults ( optimizedProject, unoptimizedProject, None, None, projectResults, otherFSharpOptions )
148150
149- let parseFSharpFileInProject ( checker : InteractiveChecker ) fileName projectFileName fileNames sources =
151+ let parseFSharpFileInProject ( checker : InteractiveChecker ) fileName projectFileName fileNames sources otherFSharpOptions =
150152 let parseResults , checkResultsOpt , projectResults = checker.ParseAndCheckFileInProject ( fileName, projectFileName, fileNames, sources)
151- let projectOptions = makeProjOptions projectFileName fileNames
153+ let projectOptions = makeProjOptions projectFileName fileNames otherFSharpOptions
152154 let optimizedProject = lazy ( makeProject projectOptions projectResults true )
153155 let unoptimizedProject = lazy ( makeProject projectOptions projectResults false )
154- ParseResults ( optimizedProject, unoptimizedProject, Some parseResults, checkResultsOpt, projectResults)
156+ ParseResults ( optimizedProject, unoptimizedProject, Some parseResults, checkResultsOpt, projectResults, otherFSharpOptions )
155157
156158let tooltipToString ( el : FSharpToolTipElement < string >): string [] =
157159 let dataToString ( data : FSharpToolTipElementData < string >) =
@@ -218,11 +220,11 @@ let getCompletionsAtLocation (parseResults: ParseResults) (line: int) (col: int)
218220 return [||]
219221}
220222
221- let makeCompiler fableLibrary fileName ( project : Project ) precompiledLib =
223+ let makeCompiler fableLibrary fileName ( project : Project ) precompiledLib ( otherFSharpOptions : string []) =
222224 let options : Fable.CompilerOptions =
223225 { typedArrays = true
224226 clampByteArrays = false
225- debugMode = true
227+ debugMode = otherFSharpOptions |> Array.exists ((=) " --define:DEBUG " )
226228 verbosity = Fable.Verbosity.Normal
227229 outputPublicInlinedFunctions = false
228230 precompiledLib = precompiledLib }
@@ -248,18 +250,21 @@ let init () =
248250 let c = checker :?> CheckerImpl
249251 c.Checker.ClearCache()
250252
251- member __.ParseFSharpScript ( checker , fileName , source ) =
253+ member __.ParseFSharpScript ( checker , fileName , source , ? otherFSharpOptions ) =
252254 let c = checker :?> CheckerImpl
255+ let otherFSharpOptions = defaultArg otherFSharpOptions [||]
253256 let projectFileName = " project" // TODO: make it an argument
254- parseFSharpScript c.Checker projectFileName fileName source :> IParseResults
257+ parseFSharpScript c.Checker projectFileName fileName source otherFSharpOptions :> IParseResults
255258
256- member __.ParseFSharpProject ( checker , projectFileName , fileNames , sources ) =
259+ member __.ParseFSharpProject ( checker , projectFileName , fileNames , sources , ? otherFSharpOptions ) =
257260 let c = checker :?> CheckerImpl
258- parseFSharpProject c.Checker projectFileName fileNames sources :> IParseResults
261+ let otherFSharpOptions = defaultArg otherFSharpOptions [||]
262+ parseFSharpProject c.Checker projectFileName fileNames sources otherFSharpOptions :> IParseResults
259263
260- member __.ParseFSharpFileInProject ( checker , fileName , projectFileName , fileNames , sources ) =
264+ member __.ParseFSharpFileInProject ( checker , fileName , projectFileName , fileNames , sources , ? otherFSharpOptions ) =
261265 let c = checker :?> CheckerImpl
262- parseFSharpFileInProject c.Checker fileName projectFileName fileNames sources :> IParseResults
266+ let otherFSharpOptions = defaultArg otherFSharpOptions [||]
267+ parseFSharpFileInProject c.Checker fileName projectFileName fileNames sources otherFSharpOptions :> IParseResults
263268
264269 member __.GetParseErrors ( parseResults : IParseResults ) =
265270 parseResults.Errors
@@ -279,7 +284,7 @@ let init () =
279284 member __.CompileToBabelAst ( fableLibrary : string , parseResults : IParseResults , fileName : string , optimized : bool , ? precompiledLib ) =
280285 let res = parseResults :?> ParseResults
281286 let project = res.GetProject ( optimized)
282- let com = makeCompiler fableLibrary fileName project precompiledLib
287+ let com = makeCompiler fableLibrary fileName project precompiledLib parseResults.OtherFSharpOptions
283288 let ast = compileAst com project
284289 let errors =
285290 com.GetLogs()
0 commit comments