From c7b461d11eb5beee97f1ba9704ad6312eac0eb18 Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Sat, 23 Sep 2017 00:00:50 -0700 Subject: [PATCH 1/7] enable fs as prefix and ignore invalid values for warnings + tests --- src/fsharp/CompileOps.fs | 21 +++---- src/fsharp/CompileOps.fsi | 6 +- src/fsharp/CompileOptions.fs | 56 +++++++++---------- src/fsharp/fsc.fs | 2 +- src/fsharp/fsi/fsi.fs | 10 ++-- .../Source/CompilerOptions/fsc/warn/env.lst | 11 +++- .../Source/CompilerOptions/fsc/warn/warn40.fs | 5 ++ .../CompilerOptions/fsc/warnaserror/env.lst | 2 + .../Source/CompilerOptions/fsc/warnon/env.lst | 2 + 9 files changed, 68 insertions(+), 47 deletions(-) create mode 100644 tests/fsharpqa/Source/CompilerOptions/fsc/warn/warn40.fs diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs index 45d6e3e78c5..d4ce85659ea 100644 --- a/src/fsharp/CompileOps.fs +++ b/src/fsharp/CompileOps.fs @@ -2000,11 +2000,12 @@ let ResolveFileUsingPaths(paths, m, name) = let searchMessage = String.concat "\n " paths raise (FileNameNotResolved(name, searchMessage, m)) -let GetWarningNumber(m, s:string) = +let GetWarningNumber(s:string) = try - Some (int32 s) - with err -> - warning(Error(FSComp.SR.buildInvalidWarningNumber(s), m)) + // Trim off leading "FS" to allow ""/warnon:FS0001;FS0002;0003; anything else we ignore + let number = if s.StartsWith("FS", StringComparison.InvariantCulture) = true then s.Substring(2) else s + Some (int32 number) + with err -> None let ComputeMakePathAbsolute implicitIncludeDir (path : string) = @@ -2513,18 +2514,18 @@ type TcConfigBuilder = tcConfigB.outputFile <- Some(outfile) outfile, pdbfile, assemblyName - member tcConfigB.TurnWarningOff(m, s:string) = + member tcConfigB.TurnWarningOff(s) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parameter - match GetWarningNumber(m, s) with + match GetWarningNumber(s) with | None -> () | Some n -> // nowarn:62 turns on mlCompatibility, e.g. shows ML compat items in intellisense menus if n = 62 then tcConfigB.mlCompatibility <- true tcConfigB.specificWarnOff <- ListSet.insert (=) n tcConfigB.specificWarnOff - member tcConfigB.TurnWarningOn(m, s:string) = + member tcConfigB.TurnWarningOn(s) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parameter - match GetWarningNumber(m, s) with + match GetWarningNumber(s) with | None -> () | Some n -> // warnon 62 turns on mlCompatibility, e.g. shows ML compat items in intellisense menus @@ -3294,7 +3295,7 @@ let GetScopedPragmasForHashDirective hd = [ match hd with | ParsedHashDirective("nowarn", numbers, m) -> for s in numbers do - match GetWarningNumber(m, s) with + match GetWarningNumber(s) with | None -> () | Some n -> yield ScopedPragma.WarningOff(m, n) | _ -> () ] @@ -4947,7 +4948,7 @@ let ProcessMetaCommandsFromInput let ApplyNoWarnsToTcConfig (tcConfig:TcConfig, inp:ParsedInput, pathOfMetaCommandSource) = // Clone let tcConfigB = tcConfig.CloneOfOriginalBuilder - let addNoWarn = fun () (m, s) -> tcConfigB.TurnWarningOff(m, s) + let addNoWarn = fun () (_, s) -> tcConfigB.TurnWarningOff(s) let addReferencedAssemblyByPath = fun () (_m, _s) -> () let addLoadedSource = fun () (_m, _s) -> () ProcessMetaCommandsFromInput (addNoWarn, addReferencedAssemblyByPath, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) diff --git a/src/fsharp/CompileOps.fsi b/src/fsharp/CompileOps.fsi index e1e1429d24a..1de142b5ff7 100755 --- a/src/fsharp/CompileOps.fsi +++ b/src/fsharp/CompileOps.fsi @@ -76,6 +76,8 @@ val ParseInput : (UnicodeLexing.Lexbuf -> Parser.token) * ErrorLogger * UnicodeL // Error and warnings //-------------------------------------------------------------------------- +val GetWarningNumber : string -> int option + /// Get the location associated with an error val GetRangeOfDiagnostic : PhasedDiagnostic -> range option @@ -381,8 +383,8 @@ type TcConfigBuilder = defaultCopyFSharpCore: bool -> TcConfigBuilder member DecideNames : string list -> outfile: string * pdbfile: string option * assemblyName: string - member TurnWarningOff : range * string -> unit - member TurnWarningOn : range * string -> unit + member TurnWarningOff : string -> unit + member TurnWarningOn : string -> unit member AddIncludePath : range * string * string -> unit member AddReferencedAssemblyByPath : range * string -> unit member RemoveReferencedAssemblyByPath : range * string -> unit diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs index 892914d0391..45f6e83ee41 100644 --- a/src/fsharp/CompileOptions.fs +++ b/src/fsharp/CompileOptions.fs @@ -552,32 +552,32 @@ let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB let errorsAndWarningsFlags (tcConfigB : TcConfigBuilder) = [ - CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> tcConfigB.globalWarnAsError <- switch <> OptionSwitch.Off), None, - Some (FSComp.SR.optsWarnaserrorPM())); - - CompilerOption("warnaserror", tagWarnList, OptionIntListSwitch (fun n switch -> - if switch = OptionSwitch.Off then - tcConfigB.specificWarnAsError <- ListSet.remove (=) n tcConfigB.specificWarnAsError ; - tcConfigB.specificWarnAsWarn <- ListSet.insert (=) n tcConfigB.specificWarnAsWarn - else - tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn ; - tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError), None, - Some (FSComp.SR.optsWarnaserror())); - - CompilerOption("warn", tagInt, OptionInt (fun n -> - tcConfigB.globalWarnLevel <- - if (n >= 0 && n <= 5) then n - else error(Error(FSComp.SR.optsInvalidWarningLevel(n),rangeCmdArgs))), None, - Some (FSComp.SR.optsWarn())); - - CompilerOption("nowarn", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOff(rangeCmdArgs, n)), None, - Some (FSComp.SR.optsNowarn())); - - CompilerOption("warnon", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOn(rangeCmdArgs,n)), None, - Some(FSComp.SR.optsWarnOn())); - - CompilerOption("consolecolors", tagNone, OptionSwitch (fun switch -> enableConsoleColoring <- switch = OptionSwitch.On), None, - Some (FSComp.SR.optsConsoleColors())) + CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> + tcConfigB.globalWarnAsError <- switch <> OptionSwitch.Off), None, Some (FSComp.SR.optsWarnaserrorPM())); + + CompilerOption("warnaserror", tagWarnList, OptionStringListSwitch (fun n switch -> + match GetWarningNumber(n) with + | Some n -> + if switch = OptionSwitch.Off then + tcConfigB.specificWarnAsError <- ListSet.remove (=) n tcConfigB.specificWarnAsError + tcConfigB.specificWarnAsWarn <- ListSet.insert (=) n tcConfigB.specificWarnAsWarn + else + tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn + tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError + | None -> () + ), None, Some (FSComp.SR.optsWarnaserror())); + + CompilerOption("warn", tagInt, OptionInt (fun n -> + tcConfigB.globalWarnLevel <- + if (n >= 0 && n <= 5) then n + else error(Error(FSComp.SR.optsInvalidWarningLevel(n),rangeCmdArgs))), None, + Some (FSComp.SR.optsWarn())); + + CompilerOption("nowarn", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOff(n)), None, Some(FSComp.SR.optsNowarn())); + + CompilerOption("warnon", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOn(n)), None, Some(FSComp.SR.optsWarnOn())); + + CompilerOption("consolecolors", tagNone, OptionSwitch (fun switch -> enableConsoleColoring <- switch = OptionSwitch.On), None, Some (FSComp.SR.optsConsoleColors())) ] @@ -693,7 +693,7 @@ let codeGenerationFlags isFsi (tcConfigB : TcConfigBuilder) = let defineSymbol tcConfigB s = tcConfigB.conditionalCompilationDefines <- s :: tcConfigB.conditionalCompilationDefines let mlCompatibilityFlag (tcConfigB : TcConfigBuilder) = - CompilerOption("mlcompatibility", tagNone, OptionUnit (fun () -> tcConfigB.mlCompatibility<-true; tcConfigB.TurnWarningOff(rangeCmdArgs,"62")), None, + CompilerOption("mlcompatibility", tagNone, OptionUnit (fun () -> tcConfigB.mlCompatibility<-true; tcConfigB.TurnWarningOff("62")), None, Some (FSComp.SR.optsMlcompatibility())) let languageFlags tcConfigB = [ @@ -904,7 +904,7 @@ let internalFlags (tcConfigB:TcConfigBuilder) = let compilingFsLibFlag (tcConfigB : TcConfigBuilder) = CompilerOption("compiling-fslib", tagNone, OptionUnit (fun () -> tcConfigB.compilingFslib <- true - tcConfigB.TurnWarningOff(rangeStartup,"42") + tcConfigB.TurnWarningOff("42") ErrorLogger.reportLibraryOnlyFeatures <- false IlxSettings.ilxCompilingFSharpCoreLib := true), Some(InternalCommandLineOption("--compiling-fslib", rangeCmdArgs)), None) let compilingFsLib20Flag (tcConfigB : TcConfigBuilder) = diff --git a/src/fsharp/fsc.fs b/src/fsharp/fsc.fs index 5984d6ef1bc..3e04d47a467 100644 --- a/src/fsharp/fsc.fs +++ b/src/fsharp/fsc.fs @@ -214,7 +214,7 @@ let AdjustForScriptCompile(ctok, tcConfigB:TcConfigBuilder, commandLineSourceFil // are local to the scripts and not added to the tcConfigB (they are added to localized clones of the tcConfigB). let references = closure.References |> List.collect snd |> List.filter (fun r->r.originalReference.Range<>range0 && r.originalReference.Range<>rangeStartup) references |> List.iter (fun r-> tcConfigB.AddReferencedAssemblyByPath(r.originalReference.Range, r.resolvedPath)) - closure.NoWarns |> List.collect (fun (n, ms) -> ms|>List.map(fun m->m, n)) |> List.iter (fun (x,m) -> tcConfigB.TurnWarningOff(x, m)) + closure.NoWarns |> List.collect (fun (n, ms) -> ms |> List.map(fun m-> m, n)) |> List.iter (fun (_, m) -> tcConfigB.TurnWarningOff(m)) closure.SourceFiles |> List.map fst |> List.iter AddIfNotPresent closure.AllRootFileDiagnostics |> List.iter diagnosticSink diff --git a/src/fsharp/fsi/fsi.fs b/src/fsharp/fsi/fsi.fs index b9331351ffe..d3da72f8cdc 100644 --- a/src/fsharp/fsi/fsi.fs +++ b/src/fsharp/fsi/fsi.fs @@ -1278,8 +1278,8 @@ type internal FsiDynamicCompiler (tcConfigB, directoryName sourceFile) (fun () -> ProcessMetaCommandsFromInput - ((fun st (m,nm) -> tcConfigB.TurnWarningOff(m,nm); st), - (fun st (m,nm) -> snd (fsiDynamicCompiler.EvalRequireReference (ctok, st, m, nm))), + ((fun st (_, nm) -> tcConfigB.TurnWarningOff(nm); st), + (fun st (m, nm) -> snd (fsiDynamicCompiler.EvalRequireReference (ctok, st, m, nm))), (fun _ _ -> ())) (tcConfigB, inp, Path.GetDirectoryName sourceFile, istate)) @@ -1301,7 +1301,7 @@ type internal FsiDynamicCompiler else fsiConsoleOutput.uprintnf " %s %s" (FSIstrings.SR.fsiLoadingFilesPrefixText()) input.FileName) fsiConsoleOutput.uprintfn "]" - closure.NoWarns |> Seq.map (fun (n,ms) -> ms |> Seq.map (fun m -> m,n)) |> Seq.concat |> Seq.iter tcConfigB.TurnWarningOff + closure.NoWarns |> Seq.map (fun (n,ms) -> ms |> Seq.map (fun _ -> n)) |> Seq.concat |> Seq.iter tcConfigB.TurnWarningOff // Play errors and warnings from resolution closure.ResolutionDiagnostics |> List.iter diagnosticSink @@ -1956,8 +1956,8 @@ type internal FsiInteractionProcessor fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOn()) {istate with timing = (v = "on")},Completed None - | IHash (ParsedHashDirective("nowarn",numbers,m),_) -> - List.iter (fun (d:string) -> tcConfigB.TurnWarningOff(m,d)) numbers + | IHash (ParsedHashDirective("nowarn",numbers,_),_) -> + List.iter (fun d -> tcConfigB.TurnWarningOff(d)) numbers istate,Completed None | IHash (ParsedHashDirective("terms",[],_),_) -> diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst b/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst index 38ef7217a0b..955ad7d5bf1 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst @@ -10,8 +10,17 @@ NoMT SOURCE=warn5_level5.fs SCFLAGS="--warn:5 --warnaserror" COMPILE_ONLY=1 # w NoMT SOURCE=warn5_level5w.fs SCFLAGS="--warn:5" COMPILE_ONLY=1 # warn5_level5w.fs SOURCE=invalid_warning_level_6.fs SCFLAGS="--warn:6" # invalid_warning_level_6.fs - SOURCE=nowarn.fs SCFLAGS="--warnaserror" # nowarn.fs + SOURCE=nowarn.fs SCFLAGS="--warnaserror" # nowarn.fs + SOURCE=warn40.fs SCFLAGS="--nowarn:40" # nowarn.fs + SOURCE=warn40.fs SCFLAGS="--nowarn:NU0000;FS40;NU0001" # nowarn.fs + SOURCE=warn40.fs SCFLAGS="--nowarn:FS0040" # nowarn.fs SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror02.fs SOURCE=nowarn_with_warnaserror03.fs SCFLAGS="--warnaserror --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror03.fs + SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs + SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror02.fs + SOURCE=nowarn_with_warnaserror03.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror03.fs + SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror:NU001;FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs + SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror:FS0040;NU001 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs + diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/warn/warn40.fs b/tests/fsharpqa/Source/CompilerOptions/fsc/warn/warn40.fs new file mode 100644 index 00000000000..c9d56fe2004 --- /dev/null +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/warn/warn40.fs @@ -0,0 +1,5 @@ +// This causes a warning 40 +[] +let main argv = + let rec x = lazy(x.Value) + 0 // return an integer exit code diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst b/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst index f4f1003891a..bb1a49d84f8 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst @@ -1,3 +1,5 @@ + SOURCE=t1.fs SCFLAGS="--warnaserror+ --warnaserror-:NU0000;FS25,FS26,FS988,NU0001 # t1.fs enabled, ex with all warnings, list with >1 element + SOURCE=t1.fs SCFLAGS="--warnaserror+ --warnaserror-:25,26,988 # t1.fs enabled, excl list with all warnings, list with >1 element SOURCE=t2.fs SCFLAGS="--warnaserror+ --warnaserror-:25,26 # t2.fs enabled, excl list with some warning, list with >1 element SOURCE=t3.fs SCFLAGS="--warnaserror+ --warnaserror-:25 # t3.fs enabled, excl list with one warning, list with 1 element diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst b/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst index 79000e59bec..f24f1747393 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst @@ -1,3 +1,5 @@ SOURCE=warnon01.fs SCFLAGS="--warnon:1182 --test:ErrorRanges" COMPILE_ONLY=1 # warnon01.fs SOURCE=warnon01.fsx SCFLAGS="--warnon:1182" COMPILE_ONLY=1 FSIMODE=PIPE # warnon01.fsx + SOURCE=warnon01.fs SCFLAGS="--warnon:NU0001;FS1182;NU0001 --test:ErrorRanges" COMPILE_ONLY=1 # warnon01.fs + SOURCE=warnon01.fsx SCFLAGS="--warnon:FS1182" COMPILE_ONLY=1 FSIMODE=PIPE # warnon01.fsx From 5c390c35acba3d3a021fe5fb10ba6464ae9e11d7 Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Mon, 25 Sep 2017 18:37:17 -0700 Subject: [PATCH 2/7] Allow #pragma to validate warnings --- src/fsharp/CompileOps.fs | 28 ++++++++++-------- src/fsharp/CompileOps.fsi | 6 ++-- src/fsharp/CompileOptions.fs | 56 ++++++++++++++++++------------------ src/fsharp/fsc.fs | 2 +- src/fsharp/fsi/fsi.fs | 10 +++---- 5 files changed, 52 insertions(+), 50 deletions(-) diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs index d4ce85659ea..b85b142b4ed 100644 --- a/src/fsharp/CompileOps.fs +++ b/src/fsharp/CompileOps.fs @@ -2000,12 +2000,17 @@ let ResolveFileUsingPaths(paths, m, name) = let searchMessage = String.concat "\n " paths raise (FileNameNotResolved(name, searchMessage, m)) -let GetWarningNumber(s:string) = - try - // Trim off leading "FS" to allow ""/warnon:FS0001;FS0002;0003; anything else we ignore - let number = if s.StartsWith("FS", StringComparison.InvariantCulture) = true then s.Substring(2) else s - Some (int32 number) +let GetWarningNumber(m, s:string) = + try + // Okay so ... + // #pragma strips FS of the #pragma "FS0004" and validates thes warning number + // therefore if we have warning id that starts with a number or starts with FS we do what we did before + // anything else is ignored + if Char.IsDigit(s.[0]) then Some (int32 s) + elif s.StartsWith("FS", StringComparison.InvariantCulture) = true then Some (int32 (s.Substring(2))) + else None with err -> + warning(Error(FSComp.SR.buildInvalidWarningNumber(s), m)) None let ComputeMakePathAbsolute implicitIncludeDir (path : string) = @@ -2514,18 +2519,18 @@ type TcConfigBuilder = tcConfigB.outputFile <- Some(outfile) outfile, pdbfile, assemblyName - member tcConfigB.TurnWarningOff(s) = + member tcConfigB.TurnWarningOff(m, s:string) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parameter - match GetWarningNumber(s) with + match GetWarningNumber(m, s) with | None -> () | Some n -> // nowarn:62 turns on mlCompatibility, e.g. shows ML compat items in intellisense menus if n = 62 then tcConfigB.mlCompatibility <- true tcConfigB.specificWarnOff <- ListSet.insert (=) n tcConfigB.specificWarnOff - member tcConfigB.TurnWarningOn(s) = + member tcConfigB.TurnWarningOn(m, s:string) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parameter - match GetWarningNumber(s) with + match GetWarningNumber(m, s) with | None -> () | Some n -> // warnon 62 turns on mlCompatibility, e.g. shows ML compat items in intellisense menus @@ -3295,7 +3300,7 @@ let GetScopedPragmasForHashDirective hd = [ match hd with | ParsedHashDirective("nowarn", numbers, m) -> for s in numbers do - match GetWarningNumber(s) with + match GetWarningNumber(m, s) with | None -> () | Some n -> yield ScopedPragma.WarningOff(m, n) | _ -> () ] @@ -4948,7 +4953,7 @@ let ProcessMetaCommandsFromInput let ApplyNoWarnsToTcConfig (tcConfig:TcConfig, inp:ParsedInput, pathOfMetaCommandSource) = // Clone let tcConfigB = tcConfig.CloneOfOriginalBuilder - let addNoWarn = fun () (_, s) -> tcConfigB.TurnWarningOff(s) + let addNoWarn = fun () (m, s) -> tcConfigB.TurnWarningOff(m, s) let addReferencedAssemblyByPath = fun () (_m, _s) -> () let addLoadedSource = fun () (_m, _s) -> () ProcessMetaCommandsFromInput (addNoWarn, addReferencedAssemblyByPath, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) @@ -5550,4 +5555,3 @@ let TypeCheckClosedInputSet (ctok, checkForErrors, tcConfig, tcImports, tcGlobal let (tcEnvAtEndOfLastFile, topAttrs, implFiles), tcState = TypeCheckMultipleInputs (ctok, checkForErrors, tcConfig, tcImports, tcGlobals, prefixPathOpt, tcState, inputs) let tcState, declaredImpls = TypeCheckClosedInputSetFinish (implFiles, tcState) tcState, topAttrs, declaredImpls, tcEnvAtEndOfLastFile - diff --git a/src/fsharp/CompileOps.fsi b/src/fsharp/CompileOps.fsi index 1de142b5ff7..e1e1429d24a 100755 --- a/src/fsharp/CompileOps.fsi +++ b/src/fsharp/CompileOps.fsi @@ -76,8 +76,6 @@ val ParseInput : (UnicodeLexing.Lexbuf -> Parser.token) * ErrorLogger * UnicodeL // Error and warnings //-------------------------------------------------------------------------- -val GetWarningNumber : string -> int option - /// Get the location associated with an error val GetRangeOfDiagnostic : PhasedDiagnostic -> range option @@ -383,8 +381,8 @@ type TcConfigBuilder = defaultCopyFSharpCore: bool -> TcConfigBuilder member DecideNames : string list -> outfile: string * pdbfile: string option * assemblyName: string - member TurnWarningOff : string -> unit - member TurnWarningOn : string -> unit + member TurnWarningOff : range * string -> unit + member TurnWarningOn : range * string -> unit member AddIncludePath : range * string * string -> unit member AddReferencedAssemblyByPath : range * string -> unit member RemoveReferencedAssemblyByPath : range * string -> unit diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs index 45f6e83ee41..892914d0391 100644 --- a/src/fsharp/CompileOptions.fs +++ b/src/fsharp/CompileOptions.fs @@ -552,32 +552,32 @@ let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB let errorsAndWarningsFlags (tcConfigB : TcConfigBuilder) = [ - CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> - tcConfigB.globalWarnAsError <- switch <> OptionSwitch.Off), None, Some (FSComp.SR.optsWarnaserrorPM())); - - CompilerOption("warnaserror", tagWarnList, OptionStringListSwitch (fun n switch -> - match GetWarningNumber(n) with - | Some n -> - if switch = OptionSwitch.Off then - tcConfigB.specificWarnAsError <- ListSet.remove (=) n tcConfigB.specificWarnAsError - tcConfigB.specificWarnAsWarn <- ListSet.insert (=) n tcConfigB.specificWarnAsWarn - else - tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn - tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError - | None -> () - ), None, Some (FSComp.SR.optsWarnaserror())); - - CompilerOption("warn", tagInt, OptionInt (fun n -> - tcConfigB.globalWarnLevel <- - if (n >= 0 && n <= 5) then n - else error(Error(FSComp.SR.optsInvalidWarningLevel(n),rangeCmdArgs))), None, - Some (FSComp.SR.optsWarn())); - - CompilerOption("nowarn", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOff(n)), None, Some(FSComp.SR.optsNowarn())); - - CompilerOption("warnon", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOn(n)), None, Some(FSComp.SR.optsWarnOn())); - - CompilerOption("consolecolors", tagNone, OptionSwitch (fun switch -> enableConsoleColoring <- switch = OptionSwitch.On), None, Some (FSComp.SR.optsConsoleColors())) + CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> tcConfigB.globalWarnAsError <- switch <> OptionSwitch.Off), None, + Some (FSComp.SR.optsWarnaserrorPM())); + + CompilerOption("warnaserror", tagWarnList, OptionIntListSwitch (fun n switch -> + if switch = OptionSwitch.Off then + tcConfigB.specificWarnAsError <- ListSet.remove (=) n tcConfigB.specificWarnAsError ; + tcConfigB.specificWarnAsWarn <- ListSet.insert (=) n tcConfigB.specificWarnAsWarn + else + tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn ; + tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError), None, + Some (FSComp.SR.optsWarnaserror())); + + CompilerOption("warn", tagInt, OptionInt (fun n -> + tcConfigB.globalWarnLevel <- + if (n >= 0 && n <= 5) then n + else error(Error(FSComp.SR.optsInvalidWarningLevel(n),rangeCmdArgs))), None, + Some (FSComp.SR.optsWarn())); + + CompilerOption("nowarn", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOff(rangeCmdArgs, n)), None, + Some (FSComp.SR.optsNowarn())); + + CompilerOption("warnon", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOn(rangeCmdArgs,n)), None, + Some(FSComp.SR.optsWarnOn())); + + CompilerOption("consolecolors", tagNone, OptionSwitch (fun switch -> enableConsoleColoring <- switch = OptionSwitch.On), None, + Some (FSComp.SR.optsConsoleColors())) ] @@ -693,7 +693,7 @@ let codeGenerationFlags isFsi (tcConfigB : TcConfigBuilder) = let defineSymbol tcConfigB s = tcConfigB.conditionalCompilationDefines <- s :: tcConfigB.conditionalCompilationDefines let mlCompatibilityFlag (tcConfigB : TcConfigBuilder) = - CompilerOption("mlcompatibility", tagNone, OptionUnit (fun () -> tcConfigB.mlCompatibility<-true; tcConfigB.TurnWarningOff("62")), None, + CompilerOption("mlcompatibility", tagNone, OptionUnit (fun () -> tcConfigB.mlCompatibility<-true; tcConfigB.TurnWarningOff(rangeCmdArgs,"62")), None, Some (FSComp.SR.optsMlcompatibility())) let languageFlags tcConfigB = [ @@ -904,7 +904,7 @@ let internalFlags (tcConfigB:TcConfigBuilder) = let compilingFsLibFlag (tcConfigB : TcConfigBuilder) = CompilerOption("compiling-fslib", tagNone, OptionUnit (fun () -> tcConfigB.compilingFslib <- true - tcConfigB.TurnWarningOff("42") + tcConfigB.TurnWarningOff(rangeStartup,"42") ErrorLogger.reportLibraryOnlyFeatures <- false IlxSettings.ilxCompilingFSharpCoreLib := true), Some(InternalCommandLineOption("--compiling-fslib", rangeCmdArgs)), None) let compilingFsLib20Flag (tcConfigB : TcConfigBuilder) = diff --git a/src/fsharp/fsc.fs b/src/fsharp/fsc.fs index 3e04d47a467..5984d6ef1bc 100644 --- a/src/fsharp/fsc.fs +++ b/src/fsharp/fsc.fs @@ -214,7 +214,7 @@ let AdjustForScriptCompile(ctok, tcConfigB:TcConfigBuilder, commandLineSourceFil // are local to the scripts and not added to the tcConfigB (they are added to localized clones of the tcConfigB). let references = closure.References |> List.collect snd |> List.filter (fun r->r.originalReference.Range<>range0 && r.originalReference.Range<>rangeStartup) references |> List.iter (fun r-> tcConfigB.AddReferencedAssemblyByPath(r.originalReference.Range, r.resolvedPath)) - closure.NoWarns |> List.collect (fun (n, ms) -> ms |> List.map(fun m-> m, n)) |> List.iter (fun (_, m) -> tcConfigB.TurnWarningOff(m)) + closure.NoWarns |> List.collect (fun (n, ms) -> ms|>List.map(fun m->m, n)) |> List.iter (fun (x,m) -> tcConfigB.TurnWarningOff(x, m)) closure.SourceFiles |> List.map fst |> List.iter AddIfNotPresent closure.AllRootFileDiagnostics |> List.iter diagnosticSink diff --git a/src/fsharp/fsi/fsi.fs b/src/fsharp/fsi/fsi.fs index d3da72f8cdc..b9331351ffe 100644 --- a/src/fsharp/fsi/fsi.fs +++ b/src/fsharp/fsi/fsi.fs @@ -1278,8 +1278,8 @@ type internal FsiDynamicCompiler (tcConfigB, directoryName sourceFile) (fun () -> ProcessMetaCommandsFromInput - ((fun st (_, nm) -> tcConfigB.TurnWarningOff(nm); st), - (fun st (m, nm) -> snd (fsiDynamicCompiler.EvalRequireReference (ctok, st, m, nm))), + ((fun st (m,nm) -> tcConfigB.TurnWarningOff(m,nm); st), + (fun st (m,nm) -> snd (fsiDynamicCompiler.EvalRequireReference (ctok, st, m, nm))), (fun _ _ -> ())) (tcConfigB, inp, Path.GetDirectoryName sourceFile, istate)) @@ -1301,7 +1301,7 @@ type internal FsiDynamicCompiler else fsiConsoleOutput.uprintnf " %s %s" (FSIstrings.SR.fsiLoadingFilesPrefixText()) input.FileName) fsiConsoleOutput.uprintfn "]" - closure.NoWarns |> Seq.map (fun (n,ms) -> ms |> Seq.map (fun _ -> n)) |> Seq.concat |> Seq.iter tcConfigB.TurnWarningOff + closure.NoWarns |> Seq.map (fun (n,ms) -> ms |> Seq.map (fun m -> m,n)) |> Seq.concat |> Seq.iter tcConfigB.TurnWarningOff // Play errors and warnings from resolution closure.ResolutionDiagnostics |> List.iter diagnosticSink @@ -1956,8 +1956,8 @@ type internal FsiInteractionProcessor fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOn()) {istate with timing = (v = "on")},Completed None - | IHash (ParsedHashDirective("nowarn",numbers,_),_) -> - List.iter (fun d -> tcConfigB.TurnWarningOff(d)) numbers + | IHash (ParsedHashDirective("nowarn",numbers,m),_) -> + List.iter (fun (d:string) -> tcConfigB.TurnWarningOff(m,d)) numbers istate,Completed None | IHash (ParsedHashDirective("terms",[],_),_) -> From f9aa24efa6582d80f02f06c356400b5344cf4475 Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Mon, 25 Sep 2017 20:40:10 -0700 Subject: [PATCH 3/7] do it right --- src/fsharp/CompileOps.fs | 8 ++++---- src/fsharp/CompileOptions.fs | 15 ++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs index b85b142b4ed..49e638ffa21 100644 --- a/src/fsharp/CompileOps.fs +++ b/src/fsharp/CompileOps.fs @@ -2003,11 +2003,11 @@ let ResolveFileUsingPaths(paths, m, name) = let GetWarningNumber(m, s:string) = try // Okay so ... - // #pragma strips FS of the #pragma "FS0004" and validates thes warning number - // therefore if we have warning id that starts with a number or starts with FS we do what we did before - // anything else is ignored + // #pragma strips FS of the #pragma "FS0004" and validates the warning number + // therefore if we have warning id that starts with a numeric digit we convert it to Some (int32) + // anything else is ignored None if Char.IsDigit(s.[0]) then Some (int32 s) - elif s.StartsWith("FS", StringComparison.InvariantCulture) = true then Some (int32 (s.Substring(2))) + elif s.StartsWith("FS", StringComparison.InvariantCulture) = true then raise (new ArgumentException()) else None with err -> warning(Error(FSComp.SR.buildInvalidWarningNumber(s), m)) diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs index 892914d0391..43aed9753f6 100644 --- a/src/fsharp/CompileOptions.fs +++ b/src/fsharp/CompileOptions.fs @@ -551,6 +551,7 @@ let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB //--------------------------------- let errorsAndWarningsFlags (tcConfigB : TcConfigBuilder) = + let trimFS (s:string) = if s.StartsWith("FS", StringComparison.InvariantCulture) = true then s.Substring(2) else s [ CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> tcConfigB.globalWarnAsError <- switch <> OptionSwitch.Off), None, Some (FSComp.SR.optsWarnaserrorPM())); @@ -563,19 +564,19 @@ let errorsAndWarningsFlags (tcConfigB : TcConfigBuilder) = tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn ; tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError), None, Some (FSComp.SR.optsWarnaserror())); - + CompilerOption("warn", tagInt, OptionInt (fun n -> tcConfigB.globalWarnLevel <- if (n >= 0 && n <= 5) then n else error(Error(FSComp.SR.optsInvalidWarningLevel(n),rangeCmdArgs))), None, Some (FSComp.SR.optsWarn())); - - CompilerOption("nowarn", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOff(rangeCmdArgs, n)), None, - Some (FSComp.SR.optsNowarn())); - CompilerOption("warnon", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOn(rangeCmdArgs,n)), None, - Some(FSComp.SR.optsWarnOn())); - + CompilerOption("nowarn", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOff(rangeCmdArgs, trimFS n)), None, + Some (FSComp.SR.optsNowarn())); + + CompilerOption("warnon", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOn(rangeCmdArgs, trimFS n)), None, + Some(FSComp.SR.optsWarnOn())); + CompilerOption("consolecolors", tagNone, OptionSwitch (fun switch -> enableConsoleColoring <- switch = OptionSwitch.On), None, Some (FSComp.SR.optsConsoleColors())) ] From 89b4cec2994b288edc7dc5c6169e6801e3337b4f Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Mon, 25 Sep 2017 20:53:52 -0700 Subject: [PATCH 4/7] use ordinal compare --- src/fsharp/CompileOps.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs index 49e638ffa21..293ae17cbf4 100644 --- a/src/fsharp/CompileOps.fs +++ b/src/fsharp/CompileOps.fs @@ -2007,7 +2007,7 @@ let GetWarningNumber(m, s:string) = // therefore if we have warning id that starts with a numeric digit we convert it to Some (int32) // anything else is ignored None if Char.IsDigit(s.[0]) then Some (int32 s) - elif s.StartsWith("FS", StringComparison.InvariantCulture) = true then raise (new ArgumentException()) + elif s.StartsWith("FS", StringComparison.Ordinal) = true then raise (new ArgumentException()) else None with err -> warning(Error(FSComp.SR.buildInvalidWarningNumber(s), m)) From fa25d38e9395e488520c3240a22517671f7bf1e6 Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Mon, 25 Sep 2017 22:49:00 -0700 Subject: [PATCH 5/7] In both places --- src/fsharp/CompileOptions.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs index 43aed9753f6..bb636e70771 100644 --- a/src/fsharp/CompileOptions.fs +++ b/src/fsharp/CompileOptions.fs @@ -551,7 +551,7 @@ let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB //--------------------------------- let errorsAndWarningsFlags (tcConfigB : TcConfigBuilder) = - let trimFS (s:string) = if s.StartsWith("FS", StringComparison.InvariantCulture) = true then s.Substring(2) else s + let trimFS (s:string) = if s.StartsWith("FS", StringComparison.Ordinal) = true then s.Substring(2) else s [ CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> tcConfigB.globalWarnAsError <- switch <> OptionSwitch.Off), None, Some (FSComp.SR.optsWarnaserrorPM())); From a4c52e9784f3e454913484303fb35320bc0ad37e Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Tue, 26 Sep 2017 00:43:56 -0700 Subject: [PATCH 6/7] Add fs prefix to warnaserror --- src/fsharp/CompileOptions.fs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs index bb636e70771..40928c1cb03 100644 --- a/src/fsharp/CompileOptions.fs +++ b/src/fsharp/CompileOptions.fs @@ -552,17 +552,26 @@ let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB let errorsAndWarningsFlags (tcConfigB : TcConfigBuilder) = let trimFS (s:string) = if s.StartsWith("FS", StringComparison.Ordinal) = true then s.Substring(2) else s + let trimFStoInt (s:string) = + try + Some (int32 (trimFS s)) + with _ -> + errorR(Error(FSComp.SR.buildArgInvalidInt(s),rangeCmdArgs)) + None [ CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> tcConfigB.globalWarnAsError <- switch <> OptionSwitch.Off), None, Some (FSComp.SR.optsWarnaserrorPM())); - CompilerOption("warnaserror", tagWarnList, OptionIntListSwitch (fun n switch -> + CompilerOption("warnaserror", tagWarnList, OptionStringListSwitch (fun n switch -> + match trimFStoInt n with + | Some n -> if switch = OptionSwitch.Off then - tcConfigB.specificWarnAsError <- ListSet.remove (=) n tcConfigB.specificWarnAsError ; + tcConfigB.specificWarnAsError <- ListSet.remove (=) n tcConfigB.specificWarnAsError tcConfigB.specificWarnAsWarn <- ListSet.insert (=) n tcConfigB.specificWarnAsWarn else - tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn ; - tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError), None, + tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn + tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError + | None -> () ), None, Some (FSComp.SR.optsWarnaserror())); CompilerOption("warn", tagInt, OptionInt (fun n -> From a8d75f6d618ffec21b1f984950aebf3523d01e24 Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Tue, 26 Sep 2017 17:12:09 -0700 Subject: [PATCH 7/7] Fixup tests --- .../fsc/dumpAllCommandLineOptions/dummy.fs | 2 +- .../fsc/dumpAllCommandLineOptions/dummy.fsx | 2 +- .../Source/CompilerOptions/fsc/warn/env.lst | 16 ++++++++-------- .../CompilerOptions/fsc/warnaserror/env.lst | 2 +- .../Source/CompilerOptions/fsc/warnon/env.lst | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fs b/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fs index 0adca947bc3..65d7f3ba86d 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fs +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fs @@ -24,7 +24,7 @@ //section='- CODE GENERATION - ' ! option=tailcalls kind=OptionSwitch //section='- CODE GENERATION - ' ! option=crossoptimize kind=OptionSwitch //section='- ERRORS AND WARNINGS - ' ! option=warnaserror kind=OptionSwitch -//section='- ERRORS AND WARNINGS - ' ! option=warnaserror kind=OptionIntListSwitch +//section='- ERRORS AND WARNINGS - ' ! option=warnaserror kind=OptionStringListSwitch //section='- ERRORS AND WARNINGS - ' ! option=warn kind=OptionInt //section='- ERRORS AND WARNINGS - ' ! option=nowarn kind=OptionStringList //section='- ERRORS AND WARNINGS - ' ! option=warnon kind=OptionStringList diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fsx b/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fsx index c112b83d0d1..aa84cfe70f6 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fsx +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/dumpAllCommandLineOptions/dummy.fsx @@ -17,7 +17,7 @@ //section='- CODE GENERATION - ' ! option=tailcalls kind=OptionSwitch //section='- CODE GENERATION - ' ! option=crossoptimize kind=OptionSwitch //section='- ERRORS AND WARNINGS - ' ! option=warnaserror kind=OptionSwitch -//section='- ERRORS AND WARNINGS - ' ! option=warnaserror kind=OptionIntListSwitch +//section='- ERRORS AND WARNINGS - ' ! option=warnaserror kind=OptionStringListSwitch //section='- ERRORS AND WARNINGS - ' ! option=warn kind=OptionInt //section='- ERRORS AND WARNINGS - ' ! option=nowarn kind=OptionStringList //section='- ERRORS AND WARNINGS - ' ! option=warnon kind=OptionStringList diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst b/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst index 955ad7d5bf1..7c71fc18546 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/warn/env.lst @@ -11,16 +11,16 @@ NoMT SOURCE=warn5_level5w.fs SCFLAGS="--warn:5" COMPILE_ONLY=1 # w SOURCE=invalid_warning_level_6.fs SCFLAGS="--warn:6" # invalid_warning_level_6.fs SOURCE=nowarn.fs SCFLAGS="--warnaserror" # nowarn.fs - SOURCE=warn40.fs SCFLAGS="--nowarn:40" # nowarn.fs - SOURCE=warn40.fs SCFLAGS="--nowarn:NU0000;FS40;NU0001" # nowarn.fs - SOURCE=warn40.fs SCFLAGS="--nowarn:FS0040" # nowarn.fs + SOURCE=warn40.fs SCFLAGS="--nowarn:40" # warn40a.fs + SOURCE=warn40.fs SCFLAGS="--nowarn:NU0000;FS40;NU0001" # warn40b.fs + SOURCE=warn40.fs SCFLAGS="--nowarn:FS0040" # warn40c.fs SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror02.fs SOURCE=nowarn_with_warnaserror03.fs SCFLAGS="--warnaserror --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror03.fs - SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs - SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror02.fs - SOURCE=nowarn_with_warnaserror03.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror03.fs - SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror:NU001;FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs - SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror:FS0040;NU001 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01.fs + SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01a.fs + SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror02a.fs + SOURCE=nowarn_with_warnaserror03.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror03a.fs + SOURCE=nowarn_with_warnaserror01.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror01b.fs + SOURCE=nowarn_with_warnaserror02.fs SCFLAGS="--warnaserror:FS0040 --warn:4" COMPILE_ONLY=1 # nowarn_with_warnaserror02b.fs diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst b/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst index bb1a49d84f8..fa1ebe0260c 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/warnaserror/env.lst @@ -1,4 +1,4 @@ - SOURCE=t1.fs SCFLAGS="--warnaserror+ --warnaserror-:NU0000;FS25,FS26,FS988,NU0001 # t1.fs enabled, ex with all warnings, list with >1 element + SOURCE=t1.fs SCFLAGS="--warnaserror+ --warnaserror-:FS25,FS26,FS988 # t1a.fs enabled, ex with all warnings, list with >1 element SOURCE=t1.fs SCFLAGS="--warnaserror+ --warnaserror-:25,26,988 # t1.fs enabled, excl list with all warnings, list with >1 element SOURCE=t2.fs SCFLAGS="--warnaserror+ --warnaserror-:25,26 # t2.fs enabled, excl list with some warning, list with >1 element diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst b/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst index f24f1747393..b570c0a1a62 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/warnon/env.lst @@ -1,5 +1,5 @@ SOURCE=warnon01.fs SCFLAGS="--warnon:1182 --test:ErrorRanges" COMPILE_ONLY=1 # warnon01.fs SOURCE=warnon01.fsx SCFLAGS="--warnon:1182" COMPILE_ONLY=1 FSIMODE=PIPE # warnon01.fsx - SOURCE=warnon01.fs SCFLAGS="--warnon:NU0001;FS1182;NU0001 --test:ErrorRanges" COMPILE_ONLY=1 # warnon01.fs - SOURCE=warnon01.fsx SCFLAGS="--warnon:FS1182" COMPILE_ONLY=1 FSIMODE=PIPE # warnon01.fsx + SOURCE=warnon01.fs SCFLAGS="--warnon:NU0001;FS1182;NU0001 --test:ErrorRanges" COMPILE_ONLY=1 # warnon01a.fs + SOURCE=warnon01.fsx SCFLAGS="--warnon:FS1182" COMPILE_ONLY=1 FSIMODE=PIPE # warnon01a.fsx