diff --git a/src/Compiler/Driver/CompilerOptions.fs b/src/Compiler/Driver/CompilerOptions.fs index e75a449c9e..52bcc8ed61 100644 --- a/src/Compiler/Driver/CompilerOptions.fs +++ b/src/Compiler/Driver/CompilerOptions.fs @@ -263,29 +263,32 @@ 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 +355,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 +364,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 +713,7 @@ let tagAlgorithm = "{SHA1|SHA256}" let tagInt = "" let tagPathMap = "" let tagNone = "" -let tagLangVersionValues = "{?|version|latest|preview}" +let tagLangVersionValues = "{version|latest|preview}" // PrintOptionInfo //---------------- @@ -1104,23 +1107,22 @@ let mlCompatibilityFlag (tcConfigB: TcConfigBuilder) = Some(FSComp.SR.optsMlcompatibility ()) ) -/// LanguageVersion management -let setLanguageVersion specifiedVersion = +let showLanguageVersions () = + + printfn "%s" (FSComp.SR.optsSupportedLangVersions ()) - let dumpAllowedValues () = - printfn "%s" (FSComp.SR.optsSupportedLangVersions ()) + for v in LanguageVersion.ValidOptions do + printfn "%s" v - for v in LanguageVersion.ValidOptions do - printfn "%s" v + for v in LanguageVersion.ValidVersions do + printfn "%s" v - for v in LanguageVersion.ValidVersions do - printfn "%s" v + exit 0 - exit 0 +/// LanguageVersion management +let setLanguageVersion (specifiedVersion: string) = - if specifiedVersion = "?" then - dumpAllowedValues () - elif specifiedVersion.ToUpperInvariant() = "PREVIEW" then + if specifiedVersion.ToUpperInvariant() = "PREVIEW" then () elif not (LanguageVersion.ContainsVersion specifiedVersion) then error (Error(FSComp.SR.optsUnrecognizedLanguageVersion specifiedVersion, rangeCmdArgs)) @@ -1129,12 +1131,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 fa4610bd00..d37e55aba5 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 2097d93eac..e29f09f758 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 11a2627663..45589eb4cd 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 98681bcd9b..a9883f7e87 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 5eba08a860..8dc01a204f 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 b331fef568..2e5b8c2ef1 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 dcdf1edc9d..44fb11ce3b 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 a88ab83889..4df86eff43 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 f71dd1c78a..5c3ac0f90f 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 615985563b..258c69a49a 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 d48f16b89f..cd715f03f0 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 5f9763a740..82a46cf050 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 e821d6299d..a0abb837b9 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 852c5be20d..e5efb843ce 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'