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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
参照アセンブリの出力の使用が無効です。'--standalone または --staticlink' を '--relabelly または --refout' と共に使用しないでください。
@@ -927,6 +932,21 @@
含まれる最適化情報を指定します。既定値は file です。分散ライブラリの場合は重要です。
+
+
+ Enable parallel IL generation.
+
+
+
+
+ Enable parallel optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
참조 어셈블리 내보내기를 잘못 사용했습니다. '--refonly 또는 --refout'과 함께 '--standalone 또는 --staticlink'를 사용하지 마세요.
@@ -927,6 +932,21 @@
포함된 최적화 정보를 지정합니다. 기본값은 파일입니다. 분산 라이브러리에 중요합니다.
+
+
+ Enable parallel IL generation.
+
+
+
+
+ Enable parallel optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
Недопустимое использование при создании базовой сборки. Не используйте "--standalone or --staticlink" с "--refonly or --refout".
@@ -927,6 +932,21 @@
Укажите включенные сведения об оптимизации, по умолчанию это файл. Необходимо для распределенных библиотек.
+
+
+ Enable parallel IL generation.
+
+
+
+
+ Enable parallel optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
Имя выходного файла 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.
+
+
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 optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
发出引用程序集的使用无效,请勿将 '--standalone 或 --staticlink' 与 '--refonly 或 --refout' 一起使用。
@@ -927,6 +932,21 @@
指定包含的优化信息,默认值为文件。对于分发库非常重要。
+
+
+ Enable parallel IL generation.
+
+
+
+
+ Enable parallel optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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.
+
+
發出參考組件的使用無效,請勿同時使用 '--standalone 或 '--refonly' 和 '--refout'。
@@ -927,6 +932,21 @@
指定包含的最佳化資訊,預設值為檔案。對於分散式文件庫很重要。
+
+
+ Enable parallel IL generation.
+
+
+
+
+ Enable parallel optimization.
+
+
+
+
+ Enable parallel reference resolution.
+
+
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
-