Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 23 additions & 23 deletions src/fsharp/LanguageFeatures.fs
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@ type LanguageFeature =
| ImplicitYield = 7
| OpenStaticClasses = 8


/// LanguageVersion management
type LanguageVersion (specifiedVersion) =
type LanguageVersion (specifiedVersionAsString) =

// When we increment language versions here preview is higher than current RTM version
static let languageVersion46 = 4.6m
Expand All @@ -44,30 +43,34 @@ type LanguageVersion (specifiedVersion) =
static let validOptions = [| "preview"; "default"; "latest"; "latestmajor" |]
static let languageVersions = set [| languageVersion46; languageVersion47 |]

static let features = dict [|
// Add new LanguageVersions here ...
LanguageFeature.LanguageVersion46, languageVersion46
LanguageFeature.LanguageVersion47, languageVersion47
LanguageFeature.PreviewVersion, previewVersion
LanguageFeature.SingleUnderscorePattern, languageVersion47
LanguageFeature.WildCardInForLoop, languageVersion47
LanguageFeature.RelaxWhitespace, languageVersion47
LanguageFeature.NameOf, previewVersion
LanguageFeature.ImplicitYield, languageVersion47
LanguageFeature.OpenStaticClasses, previewVersion
|]
static let features =
dict [
// Add new LanguageVersions here ...
LanguageFeature.LanguageVersion46, languageVersion46
LanguageFeature.LanguageVersion47, languageVersion47
LanguageFeature.PreviewVersion, previewVersion

// F# 4.7
LanguageFeature.SingleUnderscorePattern, languageVersion47
LanguageFeature.WildCardInForLoop, languageVersion47
LanguageFeature.RelaxWhitespace, languageVersion47
LanguageFeature.ImplicitYield, languageVersion47

// Add new Language Features here...
LanguageFeature.NameOf, previewVersion
LanguageFeature.OpenStaticClasses, previewVersion
]

let specified =
match specifiedVersion with
match specifiedVersionAsString with
| "?" -> 0m
| "preview" -> previewVersion
| "default" -> defaultVersion
| "latest" -> latestVersion
| "latestmajor" -> latestMajorVersion
| _ ->
match Decimal.TryParse(specifiedVersion) with
| true, v -> v
| _ -> 0m
| "4.6" -> languageVersion46
| "4.7" -> languageVersion47
| _ -> 0m

/// Check if this feature is supported by the selected langversion
member __.SupportsFeature featureId =
Expand All @@ -79,10 +82,7 @@ type LanguageVersion (specifiedVersion) =
member __.ContainsVersion version =
match version with
| "?" | "preview" | "default" | "latest" | "latestmajor" -> true
| _ ->
match Decimal.TryParse(specifiedVersion) with
| true, v -> languageVersions.Contains v
| _ -> false
| _ -> languageVersions.Contains specified

/// Get a list of valid strings for help text
member __.ValidOptions = validOptions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ type InteractiveTests() =
| Ok(_) -> Assert.Fail("expected a failure")
| Error(ex) -> Assert.IsInstanceOf<FileNotFoundException>(ex)

[<Test>]
[<Test; Ignore("This timing test fails in different environments. Skipping so that we don't assume an arbitrary CI environment has enough compute/etc. for what we need here.")>]
member _.``Evaluation can be cancelled``() =
use script = new FSharpScript()
let sleepTime = 10000
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// #NoMT #CompilerOptions #RequiresENU
// Unrecognized value '4,7' for --langversion use --langversion:? for complete list
//<Expects id="FS0246" status="error"></Expects>
#light
exit 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// #NoMT #CompilerOptions #RequiresENU
// Unrecognized value '4.70000000000' for --langversion use --langversion:? for complete list
//<Expects id="FS0246" status="error"></Expects>
#light
exit 0
2 changes: 2 additions & 0 deletions tests/fsharpqa/Source/CompilerOptions/fsc/langversion/env.lst
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@

ReqENU SOURCE=dummy.fsx COMPILE_ONLY=1 PRECMD="\$FSC_PIPE >langversionhelp.txt --langversion:? 2>&1" POSTCMD="\$FSI_PIPE --nologo --quiet --exec ..\\..\\..\\comparer.fsx langversionhelp.txt langversionhelp.437.1033.bsl" # --langversion:?
ReqENU SOURCE=badlangversion.fsx SCFLAGS=" --langversion:4.5" # --langversion:4.5
ReqENU SOURCE=badlangversion-culture.fsx SCFLAGS=" --langversion:4,7" # --langversion:4,7
ReqENU SOURCE=badlangversion-decimal.fsx SCFLAGS=" --langversion:4.70000000000" # --langversion:4.70000000000
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// #NoMT #CompilerOptions #RequiresENU
// Unrecognized value '4,7' for --langversion use --langversion:? for complete list
//<Expects id="FS0246" status="error"></Expects>
#light
exit 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// #NoMT #CompilerOptions #RequiresENU
// Unrecognized value '4.70000000000' for --langversion use --langversion:? for complete list
//<Expects id="FS0246" status="error"></Expects>
#light
exit 0
3 changes: 3 additions & 0 deletions tests/fsharpqa/Source/CompilerOptions/fsi/langversion/env.lst
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@

ReqENU SOURCE=dummy.fsx COMPILE_ONLY=1 SCFLAGS="--nologo" FSIMODE=EXEC PRECMD="\$FSI_PIPE --langversion:? >langversionhelp.txt 2>&1" POSTCMD="\$FSI_PIPE --nologo --quiet --exec ..\\..\\..\\comparer.fsx langversionhelp.txt langversionhelp.437.1033.bsl" # --langversion:?
ReqENU SOURCE=badlangversion.fsx SCFLAGS=" --langversion:4.5" # --langversion:4.5
ReqENU SOURCE=badlangversion-culture.fsx SCFLAGS=" --langversion:4,7" # --langversion:4,7
ReqENU SOURCE=badlangversion-decimal.fsx SCFLAGS=" --langversion:4.70000000000" # --langversion:4.70000000000