diff --git a/Directory.Build.props b/Directory.Build.props index 719838f0a0d..44f1df9faef 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -42,6 +42,11 @@ false + + + $(OtherFlags) --test:ParallelOptimization --test:GraphBasedChecking + + diff --git a/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md b/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md index d8658f4ce49..1f3a05a4d78 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md +++ b/docs/release-notes/.FSharp.Compiler.Service/9.0.100.md @@ -44,6 +44,8 @@ * Enforce `AttributeTargets` on unions. ([PR #17389](https://github.com/dotnet/fsharp/pull/17389)) * Applied nullable reference types to FSharp.Compiler.Service itself ([PR #15310](https://github.com/dotnet/fsharp/pull/15310)) * Ensure that isinteractive multi-emit backing fields are not public. ([Issue #17439](https://github.com/dotnet/fsharp/issues/17438)), ([PR #17439](https://github.com/dotnet/fsharp/pull/17439)) +* Enable graph type checking and parallel optimizations by default, can be turned off via the following compiler flags `--graphtypechecking-` and `--paralleloptimization-` respectivelly. ([PR #17442](https://github.com/dotnet/fsharp/pull/17442)) +* Added flags for enabling parallel ILx generation and parallel reference resolution, to enable, turn on the following compiler flags: `--parallelilxgen+` and `--parallelreferenceresolution+` ([PR #17442](https://github.com/dotnet/fsharp/pull/17442)) * Better error reporting for unions with duplicated fields. ([PR #17521](https://github.com/dotnet/fsharp/pull/17521)) * Better CE error reporting when using `use!` with `and!` ([PR #17671](https://github.com/dotnet/fsharp/pull/17671)) * Better error reporting for let bindings. ([PR #17601](https://github.com/dotnet/fsharp/pull/17601)) diff --git a/src/Compiler/Driver/CompilerConfig.fs b/src/Compiler/Driver/CompilerConfig.fs index cd883c6f7c7..b671ca50afb 100644 --- a/src/Compiler/Driver/CompilerConfig.fs +++ b/src/Compiler/Driver/CompilerConfig.fs @@ -767,18 +767,11 @@ type TcConfigBuilder = doTLR = false doFinalSimplify = false optsOn = false - optSettings = - { OptimizationSettings.Defaults with - processingMode = - if FSharpExperimentalFeaturesEnabledAutomatically then - OptimizationProcessingMode.Parallel - else - OptimizationProcessingMode.Sequential - } + optSettings = OptimizationSettings.Defaults emitTailcalls = true deterministic = false concurrentBuild = true - parallelIlxGen = FSharpExperimentalFeaturesEnabledAutomatically + parallelIlxGen = false emitMetadataAssembly = MetadataAssemblyGeneration.None preferredUiLang = None lcid = None @@ -824,11 +817,7 @@ type TcConfigBuilder = captureIdentifiersWhenParsing = false typeCheckingConfig = { - TypeCheckingConfig.Mode = - if FSharpExperimentalFeaturesEnabledAutomatically then - TypeCheckingMode.Graph - else - TypeCheckingMode.Sequential + TypeCheckingConfig.Mode = TypeCheckingMode.Graph DumpGraph = false } dumpSignatureData = false diff --git a/src/Compiler/Driver/CompilerOptions.fs b/src/Compiler/Driver/CompilerOptions.fs index 96c40724ef4..5a1e3759146 100644 --- a/src/Compiler/Driver/CompilerOptions.fs +++ b/src/Compiler/Driver/CompilerOptions.fs @@ -571,6 +571,41 @@ let SetDeterministicSwitch (tcConfigB: TcConfigBuilder) switch = let SetRealsig (tcConfigB: TcConfigBuilder) switch = tcConfigB.realsig <- (switch = OptionSwitch.On) +let SetGraphTypeCheckingSwitch (tcConfigB: TcConfigBuilder) switch = + match switch with + | OptionSwitch.On -> + tcConfigB.typeCheckingConfig <- + { tcConfigB.typeCheckingConfig with + TypeCheckingConfig.Mode = TypeCheckingMode.Graph + } + + | OptionSwitch.Off -> + tcConfigB.typeCheckingConfig <- + { tcConfigB.typeCheckingConfig with + TypeCheckingConfig.Mode = TypeCheckingMode.Sequential + } + +let SetParallelOptimizationSwitch (tcConfigB: TcConfigBuilder) switch = + match switch with + | OptionSwitch.On -> + tcConfigB.optSettings <- + { tcConfigB.optSettings with + processingMode = OptimizationProcessingMode.Parallel + } + | OptionSwitch.Off -> + tcConfigB.optSettings <- + { tcConfigB.optSettings with + processingMode = OptimizationProcessingMode.Sequential + } + +let SetParallelIlxGenSwitch (tcConfigB: TcConfigBuilder) switch = + tcConfigB.parallelIlxGen <- (switch = OptionSwitch.On) + +let SetPparallelReferenceResolutionSwitch (tcConfigB: TcConfigBuilder) switch = + match switch with + | OptionSwitch.On -> tcConfigB.parallelReferenceResolution <- ParallelReferenceResolution.On + | OptionSwitch.Off -> tcConfigB.parallelReferenceResolution <- ParallelReferenceResolution.Off + let SetReferenceAssemblyOnlySwitch (tcConfigB: TcConfigBuilder) switch = match tcConfigB.emitMetadataAssembly with | MetadataAssemblyGeneration.None when (not tcConfigB.standalone) && tcConfigB.extraStaticLinkRoots.IsEmpty -> @@ -1056,6 +1091,38 @@ let codeGenerationFlags isFsi (tcConfigB: TcConfigBuilder) = None, Some(FSComp.SR.optsReflectionFree ()) ) + + CompilerOption( + "graphtypechecking", + tagNone, + OptionSwitch(SetGraphTypeCheckingSwitch tcConfigB), + None, + Some(FSComp.SR.optsGraphTypeChecking ()) + ) + + CompilerOption( + "paralleloptimization", + tagNone, + OptionSwitch(SetParallelOptimizationSwitch tcConfigB), + None, + Some(FSComp.SR.optsParallelOptimization ()) + ) + + CompilerOption( + "parallelilxgen", + tagNone, + OptionSwitch(SetParallelIlxGenSwitch tcConfigB), + None, + Some(FSComp.SR.optsParallelIlxGen ()) + ) + + CompilerOption( + "parallelreferenceresolution", + tagNone, + OptionSwitch(SetPparallelReferenceResolutionSwitch tcConfigB), + None, + Some(FSComp.SR.optsParallelReferenceResolution ()) + ) ] if isFsi then debug @ codegen else debug @ embed @ codegen diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index 2e391fa5515..7557e2b1d40 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -933,6 +933,10 @@ optsEmitDebugInfoInQuotations,"Emit debug information in quotations" optsPreferredUiLang,"Specify the preferred output language culture name (e.g. es-ES, ja-JP)" optsNoCopyFsharpCore,"Don't copy FSharp.Core.dll along the produced binaries" optsSignatureData,"Include F# interface information, the default is file. Essential for distributing libraries." +optsGraphTypeChecking,"Use graph typechecking." +optsParallelOptimization,"Enable parallel optimization." +optsParallelIlxGen,"Enable parallel IL generation." +optsParallelReferenceResolution,"Enable parallel reference resolution." 1046,optsUnknownSignatureData,"Invalid value '%s' for --interfacedata, valid value are: none, file, compress." optsOptimizationData,"Specify included optimization information, the default is file. Important for distributed libraries." 1047,optsUnknownOptimizationData,"Invalid value '%s' for --optimizationdata, valid value are: none, file, compress." diff --git a/src/Compiler/Optimize/Optimizer.fs b/src/Compiler/Optimize/Optimizer.fs index 51d889f5691..0dffe83f68a 100644 --- a/src/Compiler/Optimize/Optimizer.fs +++ b/src/Compiler/Optimize/Optimizer.fs @@ -347,7 +347,7 @@ type OptimizationSettings = reportFunctionSizes = false reportHasEffect = false reportTotalSizes = false - processingMode = OptimizationProcessingMode.Sequential + processingMode = OptimizationProcessingMode.Parallel } /// Determines if JIT optimizations are enabled diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index 39b41f3b382..28d3a88f291 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -912,6 +912,11 @@ Zobrazí povolené hodnoty pro jazykovou verzi. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Neplatné použití generování referenčního sestavení, nepoužívejte --standalone ani --staticlink s --refonly nebo --refout. @@ -927,6 +932,21 @@ Zadejte zahrnuté informace o optimalizaci, výchozí hodnota je soubor. Důležité pro distribuované knihovny. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Název výstupního souboru pdb se nemůže shodovat s výstupním názvem souboru sestavení pomocí --pdb:filename.pdb. diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index 402571c8a5a..3a8ffd02028 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -912,6 +912,11 @@ Anzeigen der zulässigen Werte für die Sprachversion. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Ungültige Verwendung der Ausgabe einer Referenzassembly. Verwenden Sie nicht „--standalone“ oder „--staticlink“ mit „--refonly“ oder „--refout“. @@ -927,6 +932,21 @@ Geben Sie die enthaltenen Optimierungsinformationen an, der Standardwert ist „file“. Wichtig für verteilte Bibliotheken. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Der Name der PDB-Ausgabedatei kann nicht mit dem Ausgabedateinamen für den Build übereinstimmen, verwenden Sie --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index d3267a7425c..c587b51c814 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -912,6 +912,11 @@ Muestra los valores permitidos para la versión del lenguaje. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Uso no válido de emisión de un ensamblado de referencia, no use '--standalone or --staticlink' con '--refonly or --refout'. @@ -927,6 +932,21 @@ Especifique la información de optimización incluida, el valor predeterminado es el archivo. Importante para las bibliotecas distribuidas. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb El nombre del archivo de salida pdb no puede coincidir con el nombre de archivo de salida de compilación. Use --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index f74bc4e3196..83e81709846 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -912,6 +912,11 @@ Affichez les valeurs autorisées pour la version du langage. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Utilisation non valide de l’émission d’un assembly de référence, n’utilisez pas '--standalone ou --staticlink' avec '--refonly ou --refout'. @@ -927,6 +932,21 @@ Spécifiez les informations d’optimisation incluses, la valeur par défaut est le fichier. Important pour les bibliothèques distribuées. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Le nom du fichier de sortie pdb ne peut pas correspondre au nom de fichier de sortie de build utilisé --pdb:filename.pdb. diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index 3495d0c1659..22759f74310 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -912,6 +912,11 @@ Visualizzare i valori consentiti per la versione della lingua. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Utilizzo non valido della creazione di un assembly di riferimento. Non usare insieme '--standalone o --staticlink' con '--refonly o --refout'.. @@ -927,6 +932,21 @@ Specificare le informazioni di ottimizzazione incluse. Il valore predefinito è file. Important per le librerie distribuite. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Il nome del file di output pdb non può corrispondere all’uso del nome file di output della compilazione --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index a87915633be..b485a36689a 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -912,6 +912,11 @@ 言語バージョンで許可されている値を表示します。 + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 参照アセンブリの出力の使用が無効です。'--standalone または --staticlink' を '--relabelly または --refout' と共に使用しないでください。 @@ -927,6 +932,21 @@ 含まれる最適化情報を指定します。既定値は file です。分散ライブラリの場合は重要です。 + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb PDB 出力ファイル名がビルド出力ファイル名と一致しません - --pdb:filename.pdb を使用してください diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index 70a64e75a53..ec366c89bff 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -912,6 +912,11 @@ 언어 버전에 허용되는 값을 표시합니다. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 참조 어셈블리 내보내기를 잘못 사용했습니다. '--refonly 또는 --refout'과 함께 '--standalone 또는 --staticlink'를 사용하지 마세요. @@ -927,6 +932,21 @@ 포함된 최적화 정보를 지정합니다. 기본값은 파일입니다. 분산 라이브러리에 중요합니다. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb 출력 파일 이름은 빌드 출력 파일 이름 사용 --pdb:filename.pdb와 일치할 수 없습니다. diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index 31b8d2a6215..d78150de2da 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -912,6 +912,11 @@ Wyświetl dozwolone wartości dla wersji językowej. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Nieprawidłowe użycie emitowania zestawu odwołania. Nie używaj elementu „--standalone ani --staticlink” z elementem „--refonly lub --refout”. @@ -927,6 +932,21 @@ Określ dołączone informacje o optymalizacji. Wartość domyślna to plik. Ważne dla bibliotek rozproszonych. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Nazwa pliku wyjściowego pdb nie może być zgodna z nazwą pliku wyjściowego kompilacji, użyj parametru --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index c49d815ca06..c59c47178c5 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -912,6 +912,11 @@ Exiba os valores permitidos para a versão do idioma. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Uso inválido da emissão de um assembly de referência, não use '--standalone ou --staticlink' com '--refonly ou --refout'. @@ -927,6 +932,21 @@ Especifique as informações de otimização incluídas, o padrão é o file. Importante para bibliotecas distribuídas. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb O nome do arquivo de saída pdb não pode corresponder ao nome do arquivo de saída do build. Use --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index 495089d8c53..48973d81580 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -912,6 +912,11 @@ Отображение допустимых значений для версии языка. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Недопустимое использование при создании базовой сборки. Не используйте "--standalone or --staticlink" с "--refonly or --refout". @@ -927,6 +932,21 @@ Укажите включенные сведения об оптимизации, по умолчанию это файл. Необходимо для распределенных библиотек. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb Имя выходного файла pdb не может совпадать с именем выходного файла сборки. Используйте --pdb:filename.pdb diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index 93dfdedb2bd..63f803661e2 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -912,6 +912,11 @@ Dil sürümü için izin verilen değerleri görüntüleyin. + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. Başvuru bütünleştirilmiş kodu oluşturmanın geçersiz kullanımı; '--standalone’ veya ‘--staticlink' seçeneğini '--refonly’ veya ‘--refout' ile birlikte kullanmayın. @@ -927,6 +932,21 @@ Dahil edilen iyileştirme bilgilerini belirtin; varsayılan değer dosyadır. Dağıtılmış kitaplıklar için önemlidir. + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb çıkış dosyası adı, derleme çıkış dosya adı kullanımı --pdb:filename.pdb ile eşleşmiyor diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 54f6b088094..3894971ef46 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -912,6 +912,11 @@ 显示语言版本的允许值。 + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 发出引用程序集的使用无效,请勿将 '--standalone 或 --staticlink' 与 '--refonly 或 --refout' 一起使用。 @@ -927,6 +932,21 @@ 指定包含的优化信息,默认值为文件。对于分发库非常重要。 + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb 输出文件名不能与生成输出文件名 use --pdb: filename.pdb 匹配 diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index df3a706ae28..70b6ab4ca6d 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -912,6 +912,11 @@ 顯示語言版本的允許值。 + + Use graph typechecking. + Use graph typechecking. + + Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. 發出參考組件的使用無效,請勿同時使用 '--standalone 或 '--refonly' 和 '--refout'。 @@ -927,6 +932,21 @@ 指定包含的最佳化資訊,預設值為檔案。對於分散式文件庫很重要。 + + Enable parallel IL generation. + Enable parallel IL generation. + + + + Enable parallel optimization. + Enable parallel optimization. + + + + Enable parallel reference resolution. + Enable parallel reference resolution. + + The pdb output file name cannot match the build output filename use --pdb:filename.pdb pdb 輸出檔案名與使用 --pdb:filename.pdb 的建置輸出檔案名不相符 diff --git a/src/FSharp.Build/Fsc.fs b/src/FSharp.Build/Fsc.fs index c18b42a3989..a1d260043ac 100644 --- a/src/FSharp.Build/Fsc.fs +++ b/src/FSharp.Build/Fsc.fs @@ -95,6 +95,10 @@ type public Fsc() as this = let mutable vslcid: string MaybeNull = null let mutable utf8output: bool = false let mutable useReflectionFreeCodeGen: bool = false + let mutable graphTypeChecking: bool = true + let mutable parallelOptimization: bool = true + let mutable parallelIlxGen: bool = false + let mutable parallelReferenceResolution: bool = false let mutable nullable: bool option = None /// Trim whitespace ... spaces, tabs, newlines,returns, Double quotes and single quotes @@ -195,6 +199,30 @@ type public Fsc() as this = else builder.AppendSwitch("--optimize-") + // graphbasedchecking + if graphTypeChecking then + builder.AppendSwitch("--graphtypechecking+") + else + builder.AppendSwitch("--graphtypechecking-") + + // paralleloptimization + if parallelOptimization then + builder.AppendSwitch("--paralleloptimization+") + else + builder.AppendSwitch("--paralleloptimization-") + + // parallelilxgen + if parallelIlxGen then + builder.AppendSwitch("--parallelilxgen+") + else + builder.AppendSwitch("--parallelilxgen-") + + // parallelreferenceresolution + if parallelReferenceResolution then + builder.AppendSwitch("--parallelreferenceresolution+") + else + builder.AppendSwitch("--parallelreferenceresolution-") + // realsig builder.AppendOptionalSwitch("--realsig", realsig) diff --git a/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl b/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl index 75e32680e65..3aec9cd5156 100644 --- a/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl +++ b/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/misc/compiler_help_output.bsl @@ -1,4 +1,4 @@ -Microsoft (R) F# Compiler version 12.5.0.0 for F# 7.0 + Copyright (c) Microsoft Corporation. All Rights Reserved. @@ -63,6 +63,10 @@ Copyright (c) Microsoft Corporation. All Rights Reserved. --pathmap: Maps physical paths to source path names output by the compiler --crossoptimize[+|-] Enable or disable cross-module optimizations --reflectionfree Disable implicit generation of constructs using reflection +--graphtypechecking[+|-] Use graph typechecking. +--paralleloptimization[+|-] Enable parallel optimization. +--parallelilxgen[+|-] Enable parallel IL generation. +--parallelreferenceresolution[+|-] Enable parallel reference resolution. - ERRORS AND WARNINGS - diff --git a/tests/FSharp.Compiler.Service.Tests/ConsoleOnlyOptionsTests.fs b/tests/FSharp.Compiler.Service.Tests/ConsoleOnlyOptionsTests.fs index 0e5cf76221e..b4873aadb5d 100644 --- a/tests/FSharp.Compiler.Service.Tests/ConsoleOnlyOptionsTests.fs +++ b/tests/FSharp.Compiler.Service.Tests/ConsoleOnlyOptionsTests.fs @@ -22,6 +22,7 @@ let ``fsc help text is displayed correctly`` () = let blocks = GetCoreFscCompilerOptions builder let help = GetHelpFsc builder blocks let actualHelp = help.Replace("\r\n", Environment.NewLine) + let expectedHelp = expectedHelp.Replace("\r\n", Environment.NewLine) Assert.Equal(expectedHelp, actualHelp) diff --git a/tests/FSharp.Compiler.Service.Tests/expected-help-output.bsl b/tests/FSharp.Compiler.Service.Tests/expected-help-output.bsl index 61cf7105859..c99b4b9cdec 100644 --- a/tests/FSharp.Compiler.Service.Tests/expected-help-output.bsl +++ b/tests/FSharp.Compiler.Service.Tests/expected-help-output.bsl @@ -1,4 +1,4 @@ - + - OUTPUT FILES - --out: Name of the output file (Short form: @@ -100,6 +100,11 @@ optimizations --reflectionfree Disable implicit generation of constructs using reflection +--graphtypechecking[+|-] Use graph typechecking. +--paralleloptimization[+|-] Enable parallel optimization. +--parallelilxgen[+|-] Enable parallel IL generation. +--parallelreferenceresolution[+|-] Enable parallel reference + resolution. - ERRORS AND WARNINGS - diff --git a/tests/FSharp.Test.Utilities/Compiler.fs b/tests/FSharp.Test.Utilities/Compiler.fs index 19c3793d64e..23d19608a0c 100644 --- a/tests/FSharp.Test.Utilities/Compiler.fs +++ b/tests/FSharp.Test.Utilities/Compiler.fs @@ -1281,7 +1281,7 @@ Actual: | None -> cResult | Some actual -> let expected = stripVersion (normalizeNewlines expected) - if expected <> actual then + if expected <> (normalizeNewlines actual) then failwith $"""Output does not match expected: ------------{Environment.NewLine}{expected}{Environment.NewLine}Actual: ------------{Environment.NewLine}{actual}{Environment.NewLine}""" else cResult diff --git a/vsintegration/tests/UnitTests/Tests.Build.fs b/vsintegration/tests/UnitTests/Tests.Build.fs index 78e4559d358..2ec1c91acc6 100644 --- a/vsintegration/tests/UnitTests/Tests.Build.fs +++ b/vsintegration/tests/UnitTests/Tests.Build.fs @@ -79,6 +79,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("--codepage:65001" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -94,6 +99,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("-g" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -109,6 +119,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("--debug:pdbonly" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -126,6 +141,11 @@ type Build() = AssertEqual ("--define:FOO=3" + Environment.NewLine + "--define:BAR=4" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -139,7 +159,13 @@ type Build() = AssertEqual "52;109" tool.DisabledWarnings let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--nowarn:52,109" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -154,7 +180,13 @@ type Build() = AssertEqual ";" tool.DisabledWarnings let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -168,7 +200,13 @@ type Build() = AssertEqual "52;109" tool.WarningsNotAsErrors let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--warnaserror-:52,109" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -183,7 +221,13 @@ type Build() = AssertEqual "src/version" tool.VersionFile let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--versionfile:src/version" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -200,6 +244,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("--doc:foo.xml" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -215,6 +264,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("--sig:foo.fsi" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -230,6 +284,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("--keyfile:key.txt" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -245,6 +304,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("--noframework" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -258,7 +322,13 @@ type Build() = AssertEqual false tool.Optimize let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize-" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize-" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -273,7 +343,13 @@ type Build() = let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd // REVIEW we don't put the default, is that desired? - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -287,7 +363,13 @@ type Build() = AssertEqual "--yadda yadda" tool.OtherFlags let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -305,6 +387,11 @@ type Build() = printfn "cmd=\"%s\"" cmd AssertEqual ("-o:oUt.dll" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -318,7 +405,13 @@ type Build() = AssertEqual "out.pdb" tool.PdbFile let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--pdb:out.pdb" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -333,7 +426,13 @@ type Build() = AssertEqual "x64" tool.Platform let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--platform:x64" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -348,7 +447,13 @@ type Build() = AssertEqual "x86" tool.Platform let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--platform:x86" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -364,7 +469,13 @@ type Build() = AssertEqual 1 tool.References.Length let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "-r:" + dll + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -380,7 +491,13 @@ type Build() = AssertEqual path tool.ReferencePath let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--lib:c:\\sd\\staging\\tools\\nunit\\,c:\\Foo" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -396,7 +513,13 @@ type Build() = AssertEqual path tool.ReferencePath let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--lib:c:\\program files,c:\\sd\\staging\\tools\\nunit,c:\\Foo" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -411,7 +534,13 @@ type Build() = AssertEqual 1 tool.Resources.Length let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--resource:Foo.resources" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -428,7 +557,13 @@ type Build() = AssertEqual 2 tool.Sources.Length let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva-" + Environment.NewLine + @@ -445,7 +580,13 @@ type Build() = AssertEqual "Library" tool.TargetType let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--target:library" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -460,7 +601,13 @@ type Build() = AssertEqual "Winexe" tool.TargetType let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--target:winexe" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -475,7 +622,13 @@ type Build() = AssertEqual "Module" tool.TargetType let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--target:module" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -489,7 +642,13 @@ type Build() = tool.Utf8Output <- true let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--utf8output" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -503,7 +662,13 @@ type Build() = tool.Win32ResourceFile <- "foo.res" let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--win32res:foo.res" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -517,7 +682,13 @@ type Build() = tool.Win32ManifestFile <- "foo.manifest" let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--win32manifest:foo.manifest" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -531,7 +702,13 @@ type Build() = tool.HighEntropyVA <- true let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--highentropyva+" + Environment.NewLine + @@ -544,7 +721,13 @@ type Build() = tool.SubsystemVersion <- "6.02" let cmd = tool.InternalGenerateResponseFileCommands() printfn "cmd=\"%s\"" cmd - AssertEqual ("--optimize+" + Environment.NewLine + + AssertEqual ("--compressmetadata" + Environment.NewLine + + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + "--subsystemversion:6.02" + Environment.NewLine + @@ -599,6 +782,11 @@ type Build() = "--sig:foo.fsi" + Environment.NewLine + "--keyfile:key.txt" + Environment.NewLine + "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--pdb:out.pdb" + Environment.NewLine + "--platform:anycpu" + Environment.NewLine + "--resource:MyRes.resources" + Environment.NewLine + @@ -642,6 +830,11 @@ type Build() = "--sig:foo.fsi" "--keyfile:key.txt" "--optimize+" + "--graphtypechecking+" + "--paralleloptimization+" + "--parallelilxgen-" + "--parallelreferenceresolution-" + "--realsig+" "--pdb:out.pdb" "--platform:anycpu" "--resource:MyRes.resources" @@ -685,6 +878,11 @@ type Build() = let expected = "--optimize+" + Environment.NewLine + + "--graphtypechecking+" + Environment.NewLine + + "--paralleloptimization+" + Environment.NewLine + + "--parallelilxgen-" + Environment.NewLine + + "--parallelreferenceresolution-" + Environment.NewLine + + "--realsig+" + Environment.NewLine + "--nowarn:52,109,110,73,85" + Environment.NewLine + "--fullpaths" + Environment.NewLine + "--flaterrors" + Environment.NewLine + @@ -692,4 +890,3 @@ type Build() = "--nocopyfsharpcore" AssertEqual expected cmd -