anchor.diff:      @ if fscParams.Debug then ["-g"] else []
       @ fscParams.OtherParams
       
  -  fscList inputFiles argList |> ignore
  -  traceEndTask "Fsc " (inputFiles |> separated ", ")+  traceStartTask "Fsc " (inputFiles |> separated ", ")
  +  let res = fscList inputFiles argList
  +  traceEndTask "Fsc " (inputFiles |> separated ", ")
  +  res
  +
  +/// Compiles one or more F# source files with the specified parameters.
  +/// Can be called as:
  +///
  +/// ["file1.fs"; "file2.fs"]
  +/// |> Fsc (fun parameters ->
  +///   { parameters with Output = ...
  +///                     FscTarget = ...
  +///                     ... })
  +let Fsc
  +  (fscParamSetter: FscParams -> FscParams)
  +  (inputFiles: string list): unit =
  +  let res = fsc fscParamSetter inputFiles
  +
  +  if res <> 0
  +    then
  +      raise
  +        (Fake.MSBuildHelper.BuildException(
  +            "Fsc: compile failed with exit code"
  +          , [string res]))
  +  ()
  
positive.code:     /// Specifies other params for the compilation. Freeform strings.
      OtherParams: string list }
  
  let FscDefaultParams =    
      // These are the default params to the compiler service.
      { Output = ""
        FscTarget = Exe
        Platform = AnyCpu
  
negative.code:     |> Array.ofList
    let errors, exitCode = scs.Compile(optsArr)
  
    // Better compile reporting thanks to:
    // https://github.com/jbtule/ComposableExtensions/blob/5b961b30668bb7f4d17238770869b5a884bc591f/tools/CompilerHelper.fsx#L233
    for e in errors do
      let errMsg = e.ToString()
      match e.Severity with
      | Microsoft.FSharp.Compiler.Warning -> traceImportant errMsg
      | Microsoft.FSharp.Compiler.Error -> traceError errMsg
  
    exitCode
  
  /// Compiles one or more F# source files with the specified parameters.
  /// Can be called as:
  ///
  /// ["file1.fs"; "file2.fs"]
  /// |> fsc (fun parameters ->
  ///   { parameters with Output = ...
  ///                     FscTarget = ...
  ///                     ... })
  ///
  /// Returns the exit code of the compile run.
  let fsc
    (fscParamSetter: FscParams -> FscParams)
    (inputFiles: string list): int =
    let inputFiles = inputFiles |> Seq.toList
    let fscParams = fscParamSetter FscParams.Default
    let output = fscParams.Output
    let argList =
      if output <> "" then ["-o"; output] else []
  