From c965c8f929d2bd7ec1e2a113367135ef56d0efc1 Mon Sep 17 00:00:00 2001 From: Kevin Ransom Date: Wed, 7 Sep 2022 19:49:59 -0700 Subject: [PATCH 1/2] temp --- src/Compiler/Driver/CompilerOptions.fs | 68 ++++++++++++++----------- src/Compiler/FSComp.txt | 3 +- src/Compiler/xlf/FSComp.txt.cs.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.de.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.es.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.fr.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.it.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.ja.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.ko.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.pl.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.pt-BR.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.ru.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.tr.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.zh-Hans.xlf | 9 +++- src/Compiler/xlf/FSComp.txt.zh-Hant.xlf | 9 +++- 15 files changed, 132 insertions(+), 56 deletions(-) diff --git a/src/Compiler/Driver/CompilerOptions.fs b/src/Compiler/Driver/CompilerOptions.fs index e75a449c9e2..c22abab71c4 100644 --- a/src/Compiler/Driver/CompilerOptions.fs +++ b/src/Compiler/Driver/CompilerOptions.fs @@ -263,29 +263,31 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler // returns a tuple - the option token, the option argument string let parseOption (s: string) = - // grab the option token - let opts = s.Split([| ':' |]) - let mutable opt = opts[0] - if opt = "" then + let mutable option = s + if option = "" then () // if it doesn't start with a '-' or '/', reject outright - elif opt[0] <> '-' && opt[0] <> '/' then - opt <- "" - elif opt <> "--" then + elif option[0] <> '-' && option[0] <> '/' then + option <- "" + elif option <> "--" then // is it an abbreviated or MSFT-style option? // if so, strip the first character and move on with your life - if opt.Length = 2 || isSlashOpt opt then - opt <- opt[1..] + if option.Length = 2 || isSlashOpt option then + option <- option[1..] // else, it should be a non-abbreviated option starting with "--" - elif opt.Length > 3 && opt.StartsWithOrdinal("--") then - opt <- opt[2..] + elif option.Length > 3 && option.StartsWithOrdinal("--") then + option <- option[2..] else - opt <- "" + option <- "" + + // grab the option token + let opts = option.Split([| ':' |]) + let token = opts[0] // get the argument string let optArgs = if opts.Length > 1 then String.Join(":", opts[1..]) else "" - opt, optArgs + option, token, optArgs let getOptionArg compilerOption (argString: string) = if argString = "" then @@ -352,7 +354,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler processArg (responseFileOptions @ t) | opt :: t -> - let optToken, argString = parseOption opt + let option, optToken, argString = parseOption opt let reportDeprecatedOption errOpt = match errOpt with @@ -361,7 +363,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler let rec attempt l = match l with - | CompilerOption (s, _, OptionConsoleOnly f, d, _) :: _ when optToken = s && argString = "" -> + | CompilerOption (s, _, OptionConsoleOnly f, d, _) :: _ when option = s -> reportDeprecatedOption d f blocks t @@ -710,7 +712,7 @@ let tagAlgorithm = "{SHA1|SHA256}" let tagInt = "" let tagPathMap = "" let tagNone = "" -let tagLangVersionValues = "{?|version|latest|preview}" +let tagLangVersionValues = "{version|latest|preview}" // PrintOptionInfo //---------------- @@ -1104,23 +1106,24 @@ let mlCompatibilityFlag (tcConfigB: TcConfigBuilder) = Some(FSComp.SR.optsMlcompatibility ()) ) -/// LanguageVersion management -let setLanguageVersion specifiedVersion = - let dumpAllowedValues () = - printfn "%s" (FSComp.SR.optsSupportedLangVersions ()) +let showLanguageVersions () = - for v in LanguageVersion.ValidOptions do - printfn "%s" v + printfn "%s" (FSComp.SR.optsSupportedLangVersions ()) - for v in LanguageVersion.ValidVersions do - printfn "%s" v + for v in LanguageVersion.ValidOptions do + printfn "%s" v - exit 0 + for v in LanguageVersion.ValidVersions do + printfn "%s" v - if specifiedVersion = "?" then - dumpAllowedValues () - elif specifiedVersion.ToUpperInvariant() = "PREVIEW" then + exit 0 + + +/// LanguageVersion management +let setLanguageVersion (specifiedVersion: string) = + + if specifiedVersion.ToUpperInvariant() = "PREVIEW" then () elif not (LanguageVersion.ContainsVersion specifiedVersion) then error (Error(FSComp.SR.optsUnrecognizedLanguageVersion specifiedVersion, rangeCmdArgs)) @@ -1129,12 +1132,19 @@ let setLanguageVersion specifiedVersion = let languageFlags tcConfigB = [ - // -langversion:? Display the allowed values for language version // -langversion: Specify language version such as // 'default' (latest major version), or // 'latest' (latest version, including minor versions), // 'preview' (features for preview) // or specific versions like '4.7' + CompilerOption( + "langversion:?", + tagNone, + OptionConsoleOnly(fun _ -> showLanguageVersions() ), + None, + Some(FSComp.SR.optsLangVersionHelp ()) + ) + CompilerOption( "langversion", tagLangVersionValues, diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index fa4610bd00b..d37e55aba51 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -1523,7 +1523,8 @@ notAFunctionButMaybeDeclaration,"This value is not a function and cannot be appl 3353,chkFeatureNotSupportedInLibrary,"Feature '%s' requires the F# library for language version %s or greater." 3360,parsEqualsMissingInTypeDefinition,"Unexpected token in type definition. Expected '=' after the type '%s'." useSdkRefs,"Use reference assemblies for .NET framework references when available (Enabled by default)." -optsLangVersion,"Display the allowed values for language version, specify language version such as 'latest' or 'preview'" +optsLangVersion,"Display the allowed values for language version." +optsLangVersionHelp,"Specify language version such as '6.0' or 'latest' or 'preview'" optsSupportedLangVersions,"Supported language versions:" nativeResourceFormatError,"Stream does not begin with a null resource and is not in '.RES' format." nativeResourceHeaderMalformed,"Resource header beginning at offset %s is malformed." diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index 2097d93eac4..e29f09f758a 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Zobrazte si povolené hodnoty verze jazyka a pak zadejte požadovanou verzi, například latest nebo preview. + Display the allowed values for language version. + Zobrazte si povolené hodnoty verze jazyka a pak zadejte požadovanou verzi, například latest nebo preview. + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index 11a26276634..45589eb4cdc 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Zeigen Sie die zulässigen Werte für die Sprachversion an. Geben Sie die Sprachversion als "latest" oder "preview" an. + Display the allowed values for language version. + Zeigen Sie die zulässigen Werte für die Sprachversion an. Geben Sie die Sprachversion als "latest" oder "preview" an. + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index 98681bcd9b1..a9883f7e872 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Mostrar los valores permitidos para la versión de idioma, especificar la versión de idioma como "latest" "preview" + Display the allowed values for language version. + Mostrar los valores permitidos para la versión de idioma, especificar la versión de idioma como "latest" "preview" + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index 5eba08a8603..8dc01a204fe 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Afficher les valeurs autorisées pour la version du langage, spécifier la version du langage comme 'dernière' ou 'préversion' + Display the allowed values for language version. + Afficher les valeurs autorisées pour la version du langage, spécifier la version du langage comme 'dernière' ou 'préversion' + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index b331fef5680..2e5b8c2ef16 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Visualizza i valori consentiti per la versione del linguaggio. Specificare la versione del linguaggio, ad esempio 'latest' o 'preview' + Display the allowed values for language version. + Visualizza i valori consentiti per la versione del linguaggio. Specificare la versione del linguaggio, ad esempio 'latest' o 'preview' + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index dcdf1edc9d2..44fb11ce3b5 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - 言語バージョンで許可された値を表示し、'最新' や 'プレビュー' などの言語バージョンを指定する + Display the allowed values for language version. + 言語バージョンで許可された値を表示し、'最新' や 'プレビュー' などの言語バージョンを指定する + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index a88ab838892..4df86eff439 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - 언어 버전의 허용된 값을 표시하고 '최신' 또는 '미리 보기'와 같은 언어 버전을 지정합니다. + Display the allowed values for language version. + 언어 버전의 허용된 값을 표시하고 '최신' 또는 '미리 보기'와 같은 언어 버전을 지정합니다. + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index f71dd1c78a7..5c3ac0f90f3 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Wyświetl dozwolone wartości dla wersji językowej; określ wersję językową, np. „latest” lub „preview” + Display the allowed values for language version. + Wyświetl dozwolone wartości dla wersji językowej; określ wersję językową, np. „latest” lub „preview” + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index 615985563b5..258c69a49af 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Exibe os valores permitidos para a versão do idioma, especifica a versão do idioma, como 'mais recente ' ou 'prévia' + Display the allowed values for language version. + Exibe os valores permitidos para a versão do idioma, especifica a versão do idioma, como 'mais recente ' ou 'prévia' + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index d48f16b89f2..cd715f03f09 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Отображение допустимых значений для версии языка. Укажите версию языка, например, "latest" или "preview". + Display the allowed values for language version. + Отображение допустимых значений для версии языка. Укажите версию языка, например, "latest" или "preview". + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index 5f9763a7403..82a46cf0502 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - Dil sürümü için izin verilen değerleri görüntüleyin, dil sürümünü 'en son' veya 'önizleme' örneklerindeki gibi belirtin + Display the allowed values for language version. + Dil sürümü için izin verilen değerleri görüntüleyin, dil sürümünü 'en son' veya 'önizleme' örneklerindeki gibi belirtin + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index e821d6299d1..a0abb837b98 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - 显示语言版本的允许值,指定语言版本,如“最新”或“预览” + Display the allowed values for language version. + 显示语言版本的允许值,指定语言版本,如“最新”或“预览” + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index 852c5be20d8..e5efb843ce0 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -488,8 +488,13 @@ - Display the allowed values for language version, specify language version such as 'latest' or 'preview' - 顯示語言版本允許的值,指定 'latest' 或 'preview' 等語言版本 + Display the allowed values for language version. + 顯示語言版本允許的值,指定 'latest' 或 'preview' 等語言版本 + + + + Specify language version such as '6.0' or 'latest' or 'preview' + Specify language version such as '6.0' or 'latest' or 'preview' From 118cafb07d885b917e47794c31e978303bc803fb Mon Sep 17 00:00:00 2001 From: Petr Date: Fri, 9 Sep 2022 12:38:59 +0200 Subject: [PATCH 2/2] Update CompilerOptions.fs --- src/Compiler/Driver/CompilerOptions.fs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Compiler/Driver/CompilerOptions.fs b/src/Compiler/Driver/CompilerOptions.fs index c22abab71c4..52bcc8ed61a 100644 --- a/src/Compiler/Driver/CompilerOptions.fs +++ b/src/Compiler/Driver/CompilerOptions.fs @@ -265,6 +265,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler let parseOption (s: string) = let mutable option = s + if option = "" then () // if it doesn't start with a '-' or '/', reject outright @@ -1106,7 +1107,6 @@ let mlCompatibilityFlag (tcConfigB: TcConfigBuilder) = Some(FSComp.SR.optsMlcompatibility ()) ) - let showLanguageVersions () = printfn "%s" (FSComp.SR.optsSupportedLangVersions ()) @@ -1119,7 +1119,6 @@ let showLanguageVersions () = exit 0 - /// LanguageVersion management let setLanguageVersion (specifiedVersion: string) = @@ -1140,7 +1139,7 @@ let languageFlags tcConfigB = CompilerOption( "langversion:?", tagNone, - OptionConsoleOnly(fun _ -> showLanguageVersions() ), + OptionConsoleOnly(fun _ -> showLanguageVersions ()), None, Some(FSComp.SR.optsLangVersionHelp ()) )