Skip to content

Commit 6a68e46

Browse files
committed
Merge branch 'OOB'
Conflicts: src/fsharp/FSharp.Core/seq.fs
2 parents beb2416 + 4385bb7 commit 6a68e46

File tree

787 files changed

+103473
-20254
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

787 files changed

+103473
-20254
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ src/fsharp/FSharp.Compiler/*.userprefs
3030
src/*.log
3131
Debug
3232
Release
33+
vsdebug
34+
vsrelease
3335
Proto
3436
.libs
3537
Makefile
@@ -94,4 +96,10 @@ tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Utils.dll
9496
tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExprLibrary.dll
9597

9698
*.csproj.user
99+
100+
*.ide
101+
*.log
102+
*.jrs
103+
*.chk
104+
*.bak
97105
*.orig

CHANGELOG.md

Lines changed: 150 additions & 15 deletions
Large diffs are not rendered by default.

DEVGUIDE.md

Lines changed: 72 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ To get a free F# environment, go to [fsharp.org](http://fsharp.org/use/windows).
1010
> Contributions made to this repo are subject to terms and conditions of the Apache License, Version 2.0. A copy of the license can be found in the [License.txt](License.txt) file at the root of this distribution.
1111
> By using this source code in any fashion, you are agreeing to be bound by the terms of the Apache License, Version 2.0. You must not remove this notice, or any other, from this software.
1212
13-
**Questions?** If you have questions about the source code, please ask in the issues and discussion forums.
13+
**Questions?** If you have questions about the source code, please ask in the issues.
1414

1515
## 0. A Shortcut to Build and Smoke Test
1616

@@ -33,10 +33,8 @@ Note that you need the .NET framework 3.5 installed on your machine in order to
3333

3434
This uses the proto compiler to build `FSharp.Core.dll`, `FSharp.Compiler.dll`, `fsc.exe`, and `fsi.exe`.
3535

36-
```
37-
msbuild src/fsharp-library-build.proj
38-
msbuild src/fsharp-compiler-build.proj
39-
```
36+
msbuild src/fsharp-library-build.proj
37+
msbuild src/fsharp-compiler-build.proj
4038

4139
You can now use the updated F# compiler in `debug\net40\bin\fsc.exe` and F# Interactive in `debug\net40\bin\fsi.exe` to develop and test basic language and tool features.
4240

@@ -48,73 +46,81 @@ See [TESTGUIDE.md](TESTGUIDE.md) for full details on how to run tests.
4846

4947
Prior to a **Debug** test run, you need to complete **all** of these steps:
5048

51-
```
52-
msbuild src/fsharp-library-build.proj
53-
msbuild src/fsharp-compiler-build.proj
54-
msbuild src/fsharp-typeproviders-build.proj
55-
msbuild src/fsharp-library-build.proj /p:TargetFramework=net20
56-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable47
57-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable7
58-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable78
59-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable259
60-
msbuild src/fsharp-library-unittests-build.proj
61-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable47
62-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable7
63-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable78
64-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable259
65-
src\update.cmd debug -ngen
66-
tests\BuildTestTools.cmd debug
67-
```
49+
msbuild src/fsharp-library-build.proj
50+
msbuild src/fsharp-compiler-build.proj
51+
msbuild src/fsharp-typeproviders-build.proj
52+
msbuild src/fsharp-compiler-unittests-build.proj
53+
msbuild src/fsharp-library-build.proj /p:TargetFramework=net20
54+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable47
55+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable7
56+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable78
57+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable259
58+
msbuild src/fsharp-library-unittests-build.proj
59+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable47
60+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable7
61+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable78
62+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable259
63+
src\update.cmd debug -ngen
64+
tests\BuildTestTools.cmd debug
65+
6866

6967
[Optional] If testing the Visual Studio bits (see below) you will also need:
7068

71-
```
72-
msbuild vsintegration\fsharp-vsintegration-build.proj
73-
msbuild vsintegration\fsharp-vsintegration-unittests-build.proj
74-
```
69+
msbuild vsintegration\fsharp-vsintegration-build.proj
70+
msbuild vsintegration\fsharp-vsintegration-unittests-build.proj
7571

7672
Prior to a **Release** test run, you need to do **all** of these:
7773

78-
```
79-
msbuild src/fsharp-library-build.proj /p:Configuration=Release
80-
msbuild src/fsharp-compiler-build.proj /p:Configuration=Release
81-
msbuild src/fsharp-typeproviders-build.proj /p:Configuration=Release
82-
msbuild src/fsharp-library-build.proj /p:TargetFramework=net20 /p:Configuration=Release
83-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable47 /p:Configuration=Release
84-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable7 /p:Configuration=Release
85-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable78 /p:Configuration=Release
86-
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable259 /p:Configuration=Release
87-
msbuild src/fsharp-library-unittests-build.proj /p:Configuration=Release
88-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable47 /p:Configuration=Release
89-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable7 /p:Configuration=Release
90-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable78 /p:Configuration=Release
91-
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable259 /p:Configuration=Release
92-
src\update.cmd release -ngen
93-
tests\BuildTestTools.cmd release
94-
```
95-
96-
[Optional] If testing the Visual F# IDE Tools (see below) you will also need:
97-
98-
```
99-
msbuild vsintegration\fsharp-vsintegration-build.proj /p:Configuration=Release
100-
msbuild vsintegration\fsharp-vsintegration-unittests-build.proj /p:Configuration=Release
101-
```
102-
103-
## 4. [Optional] Build and Install the Visual F# IDE Tools
104-
105-
To build the VS components:
106-
107-
```
108-
msbuild vsintegration\fsharp-vsintegration-build.proj
109-
```
110-
111-
To install the VS components:
112-
113-
1. Ensure that the VSIX package is uninstalled.
114-
- In VS, select Tools/Extensions and Updates
115-
- If the package `VisualStudio.FSharp.EnableOpenSource` is installed, select Uninstall
116-
1. Run ```debug\net40\bin\EnableOpenSource.vsix```
117-
1. Restart Visual Studio, it should now be running your freshly-built Visual F# IDE Tools.
74+
msbuild src/fsharp-library-build.proj /p:Configuration=Release
75+
msbuild src/fsharp-compiler-build.proj /p:Configuration=Release
76+
msbuild src/fsharp-typeproviders-build.proj /p:Configuration=Release
77+
msbuild src/fsharp-compiler-unittests-build.proj /p:Configuration=Release
78+
msbuild src/fsharp-library-build.proj /p:TargetFramework=net20 /p:Configuration=Release
79+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable47 /p:Configuration=Release
80+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable7 /p:Configuration=Release
81+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable78 /p:Configuration=Release
82+
msbuild src/fsharp-library-build.proj /p:TargetFramework=portable259 /p:Configuration=Release
83+
msbuild src/fsharp-library-unittests-build.proj /p:Configuration=Release
84+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable47 /p:Configuration=Release
85+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable7 /p:Configuration=Release
86+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable78 /p:Configuration=Release
87+
msbuild src/fsharp-library-unittests-build.proj /p:TargetFramework=portable259 /p:Configuration=Release
88+
src\update.cmd release -ngen
89+
tests\BuildTestTools.cmd release
90+
91+
92+
[Optional] If testing **Release** build of the Visual F# IDE Tools (see below) you will also need:
93+
94+
msbuild vsintegration\fsharp-vsintegration-build.proj /p:Configuration=Release
95+
msbuild vsintegration\fsharp-vsintegration-unittests-build.proj /p:Configuration=Release
96+
97+
## 4. [Optional] Install the Visual F# IDE Tools and Clobber the F# 4.0 SDK on the machine
98+
99+
**Note:** Step #3 will install a VSIX extension into Visual Studio 2015 that changes the Visual F# IDE Tools
100+
components installed into Visual Studio 2015. You can revert this step by disabling or uninstalling the addin.
101+
102+
**Note:** Step #4 will clobber the machine-wide installed F# 4.0 SDK on your machine. This replaces the ``fsi.exe``/``fsiAnyCpu.exe`` used
103+
by Visual F# Interactive and the ``fsc.exe`` used by ``Microsoft.FSharp.targets``. Repairing Visual Studio 2015 is currently the
104+
only way to revert this step.
105+
106+
**Note:** After you complete the install, the FSharp.Core referenced by your projects will not be updated. If you want to make
107+
a project that references your updated FSharp.Core, you must explicitly change the ``TargetFSharpCoreVersion`` in the .fsproj
108+
file to ``4.4.0.5099`` (or a corresponding portable version number with suffix ``5099``).
109+
110+
For **Debug**:
111+
112+
1. Ensure that the VSIX package is uninstalled. In VS, select Tools/Extensions and Updates and if the package `VisualStudio.FSharp.EnableOpenSource` is installed, select Uninstall
113+
1. Run ``debug\net40\bin\EnableOpenSource.vsix``
114+
1. Run ``vsintegration\update-vsintegration.cmd debug`` (clobbers the installed F# 4.0 SDK)
115+
116+
For **Release**:
117+
118+
1. Ensure that the VSIX package is uninstalled. In VS, select Tools/Extensions and Updates and if the package `VisualStudio.FSharp.EnableOpenSource` is installed, select Uninstall
119+
1. Run ``release\net40\bin\EnableOpenSource.vsix``
120+
1. Run ``vsintegration\update-vsintegration.cmd release`` (clobbers the installed F# 4.0 SDK)
121+
122+
Restart Visual Studio, it should now be running your freshly-built Visual F# IDE Tools with updated F# Interactive.
123+
118124

119125
### Notes on the build
120126

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
[![Issue Stats](http://issuestats.com/github/Microsoft/visualfsharp/badge/pr)](http://issuestats.com/github/microsoft/visualfsharp)
22
[![Issue Stats](http://issuestats.com/github/Microsoft/visualfsharp/badge/issue)](http://issuestats.com/github/microsoft/visualfsharp)
3-
[![Build status](https://img.shields.io/appveyor/ci/KevinRansom/visualfsharp-radou/master.svg)](https://ci.appveyor.com/project/KevinRansom/visualfsharp-radou/branch/master)
3+
[![Build status](https://img.shields.io/appveyor/ci/KevinRansom/visualfsharp-radou/fsharp4.svg)](https://ci.appveyor.com/project/KevinRansom/visualfsharp-radou/branch/fsharp4)
4+
5+
[![Join the chat at https://gitter.im/Microsoft/visualfsharp](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Microsoft/visualfsharp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
46

57
#Visual F# Tools
68

@@ -41,3 +43,4 @@ Although the primary focus of this repo is F# for Windows and the Visual Studio
4143
###Get In Touch
4244

4345
Keep up with the Visual F# Team and the development of the Visual F# Tools by following us [@VisualFSharp](https://twitter.com/VisualFSharp) or subscribing to our [team blog](http://blogs.msdn.com/b/fsharpteam/).
46+

TESTGUIDE.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ The test cases for this suite reside under `tests\fsharp`. This suite dates back
1111
The test cases for this suite reside under `tests\fsharpqa\source`.
1212
This suite was first created when F# 2.0 was being added to Visual Studio 2010. Tests for this suite are driven by the "RunAll" framework, implemented in Perl. This suite is rather large and has broad and deep coverage of a variety of compiler, runtime, and syntax scenarios.
1313

14-
### Compiler and Library Core Unit Test Suite
15-
The test cases for this suite reside next to the F# core library code, at `src\fsharp\FSharp.Core.Unittests`. This suite is a set of standard NUnit test cases, implemented in F#. This suite focuses on validation of the core F# types and the public surface area of `FSharp.Core.dll`.
14+
### Compiler and Library Core Unit Test Suites
15+
The test cases for these suites reside next to the F# core library code, at `src\fsharp\FSharp.Core.Unittests` and `src\fsharp\FSharp.Compiler.Unittests`. These suites are standard NUnit test cases, implemented in F#. The FSharp.Core.Unittests suite focuses on validation of the core F# types and the public surface area of `FSharp.Core.dll`, and the FSharp.Compiler.Unittests suite focuses on validation of compiler internals.
1616

1717
### Visual F# Tools IDE Unit Test Suite
1818
The test cases for this suite reside next to the Visual F# Tools code, at `vsintegration\src\unittests`. This suite is a set of standard NUnit test cases, implemented in F#. This suite exercises a wide range of behaviors in the F# Visual Studio project system and language service.
@@ -38,6 +38,7 @@ The script `tests\RunTests.cmd` has been provided to make execution of the above
3838
```
3939
RunTests.cmd <debug|release> fsharp [tags to run] [tags not to run]
4040
RunTests.cmd <debug|release> fsharpqa [tags to run] [tags not to run]
41+
RunTests.cmd <debug|release> compilerunit
4142
RunTests.cmd <debug|release> coreunit
4243
RunTests.cmd <debug|release> coreunitportable47
4344
RunTests.cmd <debug|release> coreunitportable7
@@ -48,7 +49,7 @@ RunTests.cmd <debug|release> ideunit
4849

4950
`RunTests.cmd` sets a handful of environment variables which allow for the tests to work, then puts together and executes the appropriate command line to start the specified test suite.
5051

51-
All test execution logs and result files will be dropped into the `tests\TestResults` folder, and have file names matching `FSharp_*.*`, `FSharpQA_*.*`, `CoreUnit_*.*`, `IDEUnit_*.*`, e.g. `FSharpQA_Results.log` or `FSharp_Failures.log`.
52+
All test execution logs and result files will be dropped into the `tests\TestResults` folder, and have file names matching `FSharp_*.*`, `FSharpQA_*.*`, `CompilerUnit_*.*`, `CoreUnit_*.*`, `IDEUnit_*.*`, e.g. `FSharpQA_Results.log` or `FSharp_Failures.log`.
5253

5354
For the FSharp and FSharpQA suites, the list of test areas and their associated "tags" is stored at
5455

@@ -93,9 +94,14 @@ Test area directories in this suite will contain a number of source code files a
9394
Test cases will run an optional "pre command," compile some set of source files using some set of flags, optionally run the resulting binary, then optionally run a final "post command."
9495
If all of these steps complete without issue, the test is considered to have passed.
9596

96-
### Core Unit Test Suite
97+
### FSharp.Compiler and FSharp.Core Unit Test Suites
9798

98-
To build the unit test binary, call `msbuild fsharp-library-unittests-build.proj` from the `src` directory. Tests are contained in the binary `FSharp.Core.Unittests.dll`.
99+
To build these unit test binaries, from the `src` directory call
100+
101+
- `msbuild fsharp-compiler-unittests-build.proj`
102+
- Output binary is `FSharp.Compiler.Unittests.dll`
103+
- `msbuild fsharp-library-unittests-build.proj`
104+
- Output binary is `FSharp.Core.Unittests.dll`
99105

100106
You can execute and re-run these tests using any standard NUnit approach - via graphical `nunit.exe` or on the command line via `nunit-console.exe`.
101107

@@ -123,4 +129,4 @@ You can execute and re-run these tests using any standard NUnit approach - via g
123129
* Making the tests run faster
124130
* NGen-ing the F# bits (fsc, fsi, FSharp.Core, etc) will result in tests executing much faster. Make sure you run `src\update.cmd` with the `-ngen` flag before running tests.
125131
* The Fsharp and FsharpQA suites will run test cases in parallel by default. You can comment out the relevant line in `RunTests.cmd` (look for `PARALLEL_ARG`) to disable this.
126-
* By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the `fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line in `RunTests.cmd` (look for `HOSTED_COMPILER`).
132+
* By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the `fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line in `RunTests.cmd` (look for `HOSTED_COMPILER`).

appveyor-build.cmd

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,27 @@
33
set APPVEYOR_CI=1
44

55
:: Check prerequisites
6-
set _msbuildexe="%ProgramFiles(x86)%\MSBuild\12.0\Bin\MSBuild.exe"
7-
if not exist %_msbuildexe% set _msbuildexe="%ProgramFiles%\MSBuild\12.0\Bin\MSBuild.exe"
8-
if not exist %_msbuildexe% echo Error: Could not find MSBuild.exe. Please see http://www.microsoft.com/en-us/download/details.aspx?id=40760. && goto :failure
6+
if not '%VisualStudioVersion%' == '' goto vsversionset
7+
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\common7\ide\devenv.exe" set VisualStudioVersion=14.0
8+
if exist "%ProgramFiles%\Microsoft Visual Studio 14.0\common7\ide\devenv.exe" set VisualStudioVersion=14.0
9+
if not '%VisualStudioVersion%' == '' goto vsversionset
10+
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\common7\ide\devenv.exe" set VisualStudioVersion=12.0
11+
if exist "%ProgramFiles%\Microsoft Visual Studio 12.0\common7\ide\devenv.exe" set VisualStudioVersion=12.0
12+
13+
:vsversionset
14+
if '%VisualStudioVersion%' == '' echo Error: Could not find an installation of Visual Studio && goto :eof
15+
16+
if exist "%ProgramFiles(x86)%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe" set _msbuildexe="%ProgramFiles(x86)%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe"
17+
if exist "%ProgramFiles%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe" set _msbuildexe="%ProgramFiles%\MSBuild\%VisualStudioVersion%\Bin\MSBuild.exe"
18+
if not exist %_msbuildexe% echo Error: Could not find MSBuild.exe. && goto :eof
919

1020
set _ngenexe="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ngen.exe"
1121
if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure
1222

1323
.\.nuget\NuGet.exe restore packages.config -PackagesDirectory packages
1424
@if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
1525

16-
::Build
26+
:: Build
1727
%_msbuildexe% src\fsharp-proto-build.proj
1828
@if ERRORLEVEL 1 echo Error: compiler proto build failed && goto :failure
1929

@@ -38,6 +48,9 @@ if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure
3848
%_msbuildexe% src/fsharp-library-build.proj /p:TargetFramework=portable259 /p:Configuration=Release
3949
@if ERRORLEVEL 1 echo Error: library portable259 build failed && goto :failure
4050

51+
%_msbuildexe% src/fsharp-compiler-unittests-build.proj /p:Configuration=Release
52+
@if ERRORLEVEL 1 echo Error: compiler unittests build failed && goto :failure
53+
4154
%_msbuildexe% src/fsharp-library-unittests-build.proj /p:Configuration=Release
4255
@if ERRORLEVEL 1 echo Error: library unittests build failed && goto :failure
4356

@@ -67,7 +80,6 @@ call tests\BuildTestTools.cmd release
6780
@if ERRORLEVEL 1 echo Error: 'tests\BuildTestTools.cmd release' failed && goto :failure
6881

6982
@echo on
70-
7183
pushd tests
7284

7385
call RunTests.cmd release fsharp Smoke
@@ -76,6 +88,9 @@ call RunTests.cmd release fsharp Smoke
7688
call RunTests.cmd release fsharpqa Smoke
7789
@if ERRORLEVEL 1 type testresults\fsharpqa_failures.log && echo Error: 'RunTests.cmd release fsharpqa Smoke' failed && goto :failure
7890

91+
call RunTests.cmd release compilerunit
92+
@if ERRORLEVEL 1 echo Error: 'RunTests.cmd release compilerunit' failed && goto :failure
93+
7994
call RunTests.cmd release coreunit
8095
@if ERRORLEVEL 1 echo Error: 'RunTests.cmd release coreunit' failed && goto :failure
8196

@@ -84,4 +99,4 @@ popd
8499
goto :eof
85100

86101
:failure
87-
exit /b 1
102+
exit /b 1

appveyor.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
os: Windows Server 2012 R2
2+
13
init:
24
build_script:
35
- cmd: appveyor-build.cmd
6+
7+
# scripts that run after cloning repository
8+
install:
9+
# by default, all script lines are interpreted as batch
10+
- set PATH=%ProgramFiles(x86)%\MSBuild\14.0\Bin;%PATH%
11+
412
test: off
513
version: 0.0.1.{build}
614
artifacts:

packages.config

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
33
<package id="NUnit" version="2.6.4" targetFramework="net40" />
44
<package id="NUnit.Runners" version="2.6.4" />
5+
<package id="FsCheck" version="2.0.3" />
56
</packages>

0 commit comments

Comments
 (0)