Skip to content

Commit 9d1ddb7

Browse files
committed
unit test
1 parent 330a098 commit 9d1ddb7

20 files changed

Lines changed: 132 additions & 60 deletions

eng/Build.ps1

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ param (
4646
[switch]$warnAsError = $true,
4747
[switch][Alias('test')]$testDesktop,
4848
[switch]$testCoreClr,
49+
[switch]$testFSharpCompiler,
4950
[switch]$testFSharpQA,
5051
[switch]$testFSharpCore,
5152
[switch]$testVs,
@@ -77,6 +78,7 @@ function Print-Usage() {
7778
Write-Host " -testAll Run all tests"
7879
Write-Host " -testDesktop Run tests against full .NET Framework"
7980
Write-Host " -testCoreClr Run tests against CoreCLR"
81+
Write-Host " -testFSharpCompiler Run F# Compiler unit tests"
8082
Write-Host " -testFSharpQA Run F# Cambridge tests"
8183
Write-Host " -testFSharpCore Run FSharpCore unit tests"
8284
Write-Host " -testVs Run F# editor unit tests"
@@ -279,16 +281,16 @@ try {
279281
}
280282

281283
if ($testFSharpCore) {
282-
Write-Host "Environment Variables"
283-
Get-Childitem Env:
284284
TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" -targetFramework $desktopTargetFramework
285285
TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" -targetFramework $coreclrTargetFramework
286286
}
287287

288+
if ($testFSharpCompiler) {
289+
TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" -targetFramework $desktopTargetFramework
290+
TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" -targetFramework $coreclrTargetFramework
291+
}
288292

289293
if ($testVs) {
290-
Write-Host "Environment Variables"
291-
Get-Childitem Env:
292294
TestUsingNUnit -testProject "$RepoRoot\vsintegration\tests\GetTypesVS.UnitTests\GetTypesVS.UnitTests.fsproj" -targetFramework $desktopTargetFramework
293295
TestUsingNUnit -testProject "$RepoRoot\vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj" -targetFramework $desktopTargetFramework
294296
}

src/fsharp/CompileOps.fs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3517,7 +3517,6 @@ type TcAssemblyResolutions(tcConfig: TcConfig, results: AssemblyResolution list,
35173517

35183518
static member GetAllDllReferences (tcConfig: TcConfig) = [
35193519
let primaryReference = tcConfig.PrimaryAssemblyDllReference()
3520-
//yield primaryReference
35213520

35223521
if not tcConfig.compilingFslib then
35233522
yield tcConfig.CoreLibraryDllReference()
@@ -5126,12 +5125,12 @@ module private ScriptPreprocessClosure =
51265125

51275126
/// Given source text, find the full load closure. Used from service.fs, when editing a script file
51285127
let GetFullClosureOfScriptText
5129-
(ctok, legacyReferenceResolver, defaultFSharpBinariesDir,
5130-
filename, sourceText, codeContext,
5128+
(ctok, legacyReferenceResolver, defaultFSharpBinariesDir,
5129+
filename, sourceText, codeContext,
51315130
useSimpleResolution, useFsiAuxLib, useSdkRefs,
5132-
lexResourceManager: Lexhelp.LexResourceManager,
5131+
lexResourceManager: Lexhelp.LexResourceManager,
51335132
applyCommmandLineArgs, assumeDotNetFramework,
5134-
tryGetMetadataSnapshot, reduceMemoryUsage) =
5133+
tryGetMetadataSnapshot, reduceMemoryUsage) =
51355134

51365135
// Resolve the basic references such as FSharp.Core.dll first, before processing any #I directives in the script
51375136
//
@@ -5178,15 +5177,15 @@ type LoadClosure with
51785177
/// A temporary TcConfig is created along the way, is why this routine takes so many arguments. We want to be sure to use exactly the
51795178
/// same arguments as the rest of the application.
51805179
static member ComputeClosureOfScriptText
5181-
(ctok, legacyReferenceResolver, defaultFSharpBinariesDir,
5182-
filename: string, sourceText: ISourceText, codeContext, useSimpleResolution: bool,
5183-
useFsiAuxLib, useSdkRefs, lexResourceManager: Lexhelp.LexResourceManager,
5184-
applyCommmandLineArgs, assumeDotNetFramework, tryGetMetadataSnapshot, reduceMemoryUsage) =
5180+
(ctok, legacyReferenceResolver, defaultFSharpBinariesDir,
5181+
filename: string, sourceText: ISourceText, codeContext, useSimpleResolution: bool,
5182+
useFsiAuxLib, useSdkRefs, lexResourceManager: Lexhelp.LexResourceManager,
5183+
applyCommmandLineArgs, assumeDotNetFramework, tryGetMetadataSnapshot, reduceMemoryUsage) =
51855184

51865185
use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parse
51875186
ScriptPreprocessClosure.GetFullClosureOfScriptText
5188-
(ctok, legacyReferenceResolver, defaultFSharpBinariesDir, filename, sourceText,
5189-
codeContext, useSimpleResolution, useFsiAuxLib, useSdkRefs, lexResourceManager,
5187+
(ctok, legacyReferenceResolver, defaultFSharpBinariesDir, filename, sourceText,
5188+
codeContext, useSimpleResolution, useFsiAuxLib, useSdkRefs, lexResourceManager,
51905189
applyCommmandLineArgs, assumeDotNetFramework, tryGetMetadataSnapshot, reduceMemoryUsage)
51915190

51925191
/// Analyze a set of script files and find the closure of their references.
@@ -5195,8 +5194,7 @@ type LoadClosure with
51955194
lexResourceManager: Lexhelp.LexResourceManager) =
51965195
use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parse
51975196
ScriptPreprocessClosure.GetFullClosureOfScriptFiles (ctok, tcConfig, files, codeContext, lexResourceManager)
5198-
5199-
5197+
52005198

52015199
//----------------------------------------------------------------------------
52025200
// Initial type checking environment

src/fsharp/DotNetFrameworkDependencies.fs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,39 +38,44 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies
3838
//
3939
// Format:
4040
// =======
41-
// $(Major).$(Minor).$(Build) [-SomePrefix]
41+
// $(Major).$(Minor).$(Build) [-SomeSuffix]
4242
// Major, Minor, Build collates normally
43-
// Strings without -SomePrefix collate higher than SomePrefix,
44-
// SomePrefix collates using normal alphanumeric rules
43+
// Strings without -SomeSuffix collate higher than SomeSuffix,
44+
// SomeSuffix collates using normal alphanumeric rules
4545
//
4646
let deconstructVersion (version:string) =
47-
let getSuffix =
47+
let version, suffix =
4848
let pos = version.IndexOf("-")
49-
if pos >= 0 then version.Substring(pos + 1) else ""
50-
let elements = version.Split('.')
49+
if pos >= 0 then
50+
version.Substring(0, pos), version.Substring(pos + 1)
51+
else version, ""
5152

53+
let elements = version.Split('.')
5254
if elements.Length < 3 then
53-
struct (0, 0, 0, getSuffix)
55+
struct (0, 0, 0, suffix)
5456
else
55-
struct (Int32.Parse(elements.[0]), Int32.Parse(elements.[1]), Int32.Parse(elements.[2]), getSuffix)
57+
struct (Int32.Parse(elements.[0]), Int32.Parse(elements.[1]), Int32.Parse(elements.[2]), suffix)
5658

5759
let versionCompare c1 c2 =
5860
if c1 = c2 then 0
5961
else
6062
try
6163
let struct (major1, minor1, build1, suffix1 ) = deconstructVersion c1
6264
let struct (major2, minor2, build2, suffix2 ) = deconstructVersion c2
63-
64-
let v = major2 - major1
65-
if v = 0 then 0
65+
let v = major1 - major2
66+
if v <> 0 then v
6667
else
67-
let v = minor2 - minor1
68+
let v = minor1 - minor2
6869
if v <> 0 then v
6970
else
70-
let v = build2 - build1
71+
let v = build1 - build2
7172
if v <> 0 then v
7273
else
73-
String.CompareOrdinal(suffix2, suffix1)
74+
match String.IsNullOrEmpty(suffix1), String.IsNullOrEmpty(suffix2) with
75+
| true, true -> 0
76+
| true, false -> 1
77+
| false, true -> -1
78+
| false, false -> String.Compare(suffix1, suffix2, StringComparison.InvariantCultureIgnoreCase)
7479
with _ -> 0
7580

7681
let executionTfm =

src/fsharp/FSComp.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1458,4 +1458,4 @@ notAFunctionButMaybeDeclaration,"This value is not a function and cannot be appl
14581458
3245,tcCopyAndUpdateNeedsRecordType,"The input to a copy-and-update expression that creates an anonymous record must be either an anonymous record or a record"
14591459
3300,chkInvalidFunctionParameterType,"The parameter '%s' has an invalid type '%s'. This is not permitted by the rules of Common IL."
14601460
3301,chkInvalidFunctionReturnType,"The function or method has an invalid return type '%s'. This is not permitted by the rules of Common IL."
1461-
useSdkRefs,"Use reference assemblies for DotNET framework references when available (Enabled by default))."
1461+
useSdkRefs,"Use reference assemblies for .NET framework references when available (Enabled by default))."

src/fsharp/service/service.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3209,9 +3209,9 @@ type FSharpChecker(legacyReferenceResolver, projectCacheSize, keepAssemblyConten
32093209
backgroundCompiler.KeepProjectAlive(options, userOpName)
32103210

32113211
/// For a given script file, get the ProjectOptions implied by the #load closure
3212-
member ic.GetProjectOptionsFromScript(filename, source, ?loadedTimeStamp, ?otherFlags, ?useFsiAuxLib, ?useSdkRefs, ?assumeDotNetFramework, ?extraProjectInfo: obj, ?optionsStamp: int64, ?userOpName: string) =
3212+
member ic.GetProjectOptionsFromScript(filename, sourceText, ?loadedTimeStamp, ?otherFlags, ?useFsiAuxLib, ?useSdkRefs, ?assumeDotNetFramework, ?extraProjectInfo: obj, ?optionsStamp: int64, ?userOpName: string) =
32133213
let userOpName = defaultArg userOpName "Unknown"
3214-
backgroundCompiler.GetProjectOptionsFromScript(filename, source, loadedTimeStamp, otherFlags, useFsiAuxLib, useSdkRefs, assumeDotNetFramework, extraProjectInfo, optionsStamp, userOpName)
3214+
backgroundCompiler.GetProjectOptionsFromScript(filename, sourceText, loadedTimeStamp, otherFlags, useFsiAuxLib, useSdkRefs, assumeDotNetFramework, extraProjectInfo, optionsStamp, userOpName)
32153215

32163216
member ic.GetProjectOptionsFromCommandLineArgs(projectFileName, argv, ?loadedTimeStamp, ?extraProjectInfo: obj) =
32173217
let loadedTimeStamp = defaultArg loadedTimeStamp DateTime.MaxValue // Not 'now', we don't want to force reloading

src/fsharp/xlf/FSComp.txt.cs.xlf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
<note />
139139
</trans-unit>
140140
<trans-unit id="useSdkRefs">
141-
<source>Use reference assemblies for DotNET framework references when available (Enabled by default)).</source>
142-
<target state="new">Use reference assemblies for DotNET framework references when available (Enabled by default)).</target>
141+
<source>Use reference assemblies for .NET framework references when available (Enabled by default)).</source>
142+
<target state="new">Use reference assemblies for .NET framework references when available (Enabled by default)).</target>
143143
<note />
144144
</trans-unit>
145145
<trans-unit id="yieldUsedInsteadOfYieldBang">

src/fsharp/xlf/FSComp.txt.de.xlf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
<note />
139139
</trans-unit>
140140
<trans-unit id="useSdkRefs">
141-
<source>Use reference assemblies for DotNET framework references when available (Enabled by default)).</source>
142-
<target state="new">Use reference assemblies for DotNET framework references when available (Enabled by default)).</target>
141+
<source>Use reference assemblies for .NET framework references when available (Enabled by default)).</source>
142+
<target state="new">Use reference assemblies for .NET framework references when available (Enabled by default)).</target>
143143
<note />
144144
</trans-unit>
145145
<trans-unit id="yieldUsedInsteadOfYieldBang">

src/fsharp/xlf/FSComp.txt.es.xlf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
<note />
139139
</trans-unit>
140140
<trans-unit id="useSdkRefs">
141-
<source>Use reference assemblies for DotNET framework references when available (Enabled by default)).</source>
142-
<target state="new">Use reference assemblies for DotNET framework references when available (Enabled by default)).</target>
141+
<source>Use reference assemblies for .NET framework references when available (Enabled by default)).</source>
142+
<target state="new">Use reference assemblies for .NET framework references when available (Enabled by default)).</target>
143143
<note />
144144
</trans-unit>
145145
<trans-unit id="yieldUsedInsteadOfYieldBang">

src/fsharp/xlf/FSComp.txt.fr.xlf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
<note />
139139
</trans-unit>
140140
<trans-unit id="useSdkRefs">
141-
<source>Use reference assemblies for DotNET framework references when available (Enabled by default)).</source>
142-
<target state="new">Use reference assemblies for DotNET framework references when available (Enabled by default)).</target>
141+
<source>Use reference assemblies for .NET framework references when available (Enabled by default)).</source>
142+
<target state="new">Use reference assemblies for .NET framework references when available (Enabled by default)).</target>
143143
<note />
144144
</trans-unit>
145145
<trans-unit id="yieldUsedInsteadOfYieldBang">

src/fsharp/xlf/FSComp.txt.it.xlf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@
138138
<note />
139139
</trans-unit>
140140
<trans-unit id="useSdkRefs">
141-
<source>Use reference assemblies for DotNET framework references when available (Enabled by default)).</source>
142-
<target state="new">Use reference assemblies for DotNET framework references when available (Enabled by default)).</target>
141+
<source>Use reference assemblies for .NET framework references when available (Enabled by default)).</source>
142+
<target state="new">Use reference assemblies for .NET framework references when available (Enabled by default)).</target>
143143
<note />
144144
</trans-unit>
145145
<trans-unit id="yieldUsedInsteadOfYieldBang">

0 commit comments

Comments
 (0)