@@ -29,7 +29,8 @@ type ParseResults (optimizedProject: Lazy<Project>,
29
29
unoptimizedProject: Lazy< Project>,
30
30
parseFileResultsOpt: FSharpParseFileResults option,
31
31
checkFileResultsOpt: FSharpCheckFileResults option,
32
- checkProjectResults: FSharpCheckProjectResults) =
32
+ checkProjectResults: FSharpCheckProjectResults,
33
+ otherFSharpOptions: string[]) =
33
34
34
35
member __.GetProject ( optimized : bool ) =
35
36
if optimized
@@ -41,6 +42,7 @@ type ParseResults (optimizedProject: Lazy<Project>,
41
42
member __.CheckProjectResults = checkProjectResults
42
43
43
44
interface IParseResults with
45
+ member __.OtherFSharpOptions = otherFSharpOptions
44
46
member __.Errors = checkProjectResults.Errors |> Array.map mapError
45
47
46
48
let inline private tryGetLexerSymbolIslands ( sym : Lexer.LexerSymbol ) =
@@ -104,12 +106,12 @@ let convertGlyph glyph =
104
106
| FSharpGlyph.Event ->
105
107
Glyph.Event
106
108
107
- let makeProjOptions projectFileName fileNames =
109
+ let makeProjOptions projectFileName fileNames otherFSharpOptions =
108
110
let projOptions : FSharpProjectOptions =
109
111
{ ProjectFileName = projectFileName
110
112
ProjectId = None
111
113
SourceFiles = fileNames
112
- OtherOptions = [| |]
114
+ OtherOptions = otherFSharpOptions
113
115
ReferencedProjects = [| |]
114
116
IsIncompleteTypeCheckEnvironment = false
115
117
UseScriptResolutionRules = false
@@ -131,27 +133,27 @@ let makeProject projectOptions (projectResults: FSharpCheckProjectResults) optim
131
133
implFiles |> Seq.map ( fun file -> Fable.Path.normalizePathAndEnsureFsExtension file.FileName, file) |> dict
132
134
Project( projectOptions, implFilesMap, projectResults.Errors)
133
135
134
- let parseFSharpScript ( checker : InteractiveChecker ) projectFileName fileName source =
136
+ let parseFSharpScript ( checker : InteractiveChecker ) projectFileName fileName source otherFSharpOptions =
135
137
let parseResults , checkResults , projectResults =
136
138
checker.ParseAndCheckScript ( projectFileName, fileName, source)
137
- let projectOptions = makeProjOptions projectFileName [| fileName |]
139
+ let projectOptions = makeProjOptions projectFileName [| fileName |] otherFSharpOptions
138
140
let optimizedProject = lazy ( makeProject projectOptions projectResults true )
139
141
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 )
141
143
142
- let parseFSharpProject ( checker : InteractiveChecker ) projectFileName fileNames sources =
144
+ let parseFSharpProject ( checker : InteractiveChecker ) projectFileName fileNames sources otherFSharpOptions =
143
145
let projectResults = checker.ParseAndCheckProject ( projectFileName, fileNames, sources)
144
- let projectOptions = makeProjOptions projectFileName fileNames
146
+ let projectOptions = makeProjOptions projectFileName fileNames otherFSharpOptions
145
147
let optimizedProject = lazy ( makeProject projectOptions projectResults true )
146
148
let unoptimizedProject = lazy ( makeProject projectOptions projectResults false )
147
- ParseResults ( optimizedProject, unoptimizedProject, None, None, projectResults)
149
+ ParseResults ( optimizedProject, unoptimizedProject, None, None, projectResults, otherFSharpOptions )
148
150
149
- let parseFSharpFileInProject ( checker : InteractiveChecker ) fileName projectFileName fileNames sources =
151
+ let parseFSharpFileInProject ( checker : InteractiveChecker ) fileName projectFileName fileNames sources otherFSharpOptions =
150
152
let parseResults , checkResultsOpt , projectResults = checker.ParseAndCheckFileInProject ( fileName, projectFileName, fileNames, sources)
151
- let projectOptions = makeProjOptions projectFileName fileNames
153
+ let projectOptions = makeProjOptions projectFileName fileNames otherFSharpOptions
152
154
let optimizedProject = lazy ( makeProject projectOptions projectResults true )
153
155
let unoptimizedProject = lazy ( makeProject projectOptions projectResults false )
154
- ParseResults ( optimizedProject, unoptimizedProject, Some parseResults, checkResultsOpt, projectResults)
156
+ ParseResults ( optimizedProject, unoptimizedProject, Some parseResults, checkResultsOpt, projectResults, otherFSharpOptions )
155
157
156
158
let tooltipToString ( el : FSharpToolTipElement < string >): string [] =
157
159
let dataToString ( data : FSharpToolTipElementData < string >) =
@@ -218,11 +220,11 @@ let getCompletionsAtLocation (parseResults: ParseResults) (line: int) (col: int)
218
220
return [||]
219
221
}
220
222
221
- let makeCompiler fableLibrary fileName ( project : Project ) precompiledLib =
223
+ let makeCompiler fableLibrary fileName ( project : Project ) precompiledLib ( otherFSharpOptions : string []) =
222
224
let options : Fable.CompilerOptions =
223
225
{ typedArrays = true
224
226
clampByteArrays = false
225
- debugMode = true
227
+ debugMode = otherFSharpOptions |> Array.exists ((=) " --define:DEBUG " )
226
228
verbosity = Fable.Verbosity.Normal
227
229
outputPublicInlinedFunctions = false
228
230
precompiledLib = precompiledLib }
@@ -248,18 +250,21 @@ let init () =
248
250
let c = checker :?> CheckerImpl
249
251
c.Checker.ClearCache()
250
252
251
- member __.ParseFSharpScript ( checker , fileName , source ) =
253
+ member __.ParseFSharpScript ( checker , fileName , source , ? otherFSharpOptions ) =
252
254
let c = checker :?> CheckerImpl
255
+ let otherFSharpOptions = defaultArg otherFSharpOptions [||]
253
256
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
255
258
256
- member __.ParseFSharpProject ( checker , projectFileName , fileNames , sources ) =
259
+ member __.ParseFSharpProject ( checker , projectFileName , fileNames , sources , ? otherFSharpOptions ) =
257
260
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
259
263
260
- member __.ParseFSharpFileInProject ( checker , fileName , projectFileName , fileNames , sources ) =
264
+ member __.ParseFSharpFileInProject ( checker , fileName , projectFileName , fileNames , sources , ? otherFSharpOptions ) =
261
265
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
263
268
264
269
member __.GetParseErrors ( parseResults : IParseResults ) =
265
270
parseResults.Errors
@@ -279,7 +284,7 @@ let init () =
279
284
member __.CompileToBabelAst ( fableLibrary : string , parseResults : IParseResults , fileName : string , optimized : bool , ? precompiledLib ) =
280
285
let res = parseResults :?> ParseResults
281
286
let project = res.GetProject ( optimized)
282
- let com = makeCompiler fableLibrary fileName project precompiledLib
287
+ let com = makeCompiler fableLibrary fileName project precompiledLib parseResults.OtherFSharpOptions
283
288
let ast = compileAst com project
284
289
let errors =
285
290
com.GetLogs()
0 commit comments