diff --git a/DEVGUIDE.md b/DEVGUIDE.md index f7a44b11253..21c23426bc7 100644 --- a/DEVGUIDE.md +++ b/DEVGUIDE.md @@ -7,6 +7,8 @@ To learn what F# is and why it's interesting, go to [fsharp.org](http://fsharp.o The primary technical documents for the F# compiler code are +* [The F# Language and Core Library RFC Process](http://fsharp.github.io/2016/09/26/fsharp-rfc-process.html) + * [The F# Language Specification](http://fsharp.org/specs/language-spec/) * [The F# Compiler Technical Guide](http://fsharp.github.io/2015/09/29/fsharp-compiler-guide.html) @@ -34,7 +36,7 @@ There are various qualifiers: build.cmd release -- build release (the default) build.cmd debug -- build debug instead of release - build.cmd net40 -- build .NET Framework compiler + build.cmd net40 -- build .NET Framework compiler (the default) build.cmd coreclr -- build .NET Core compiler build.cmd vs -- build the Visual F# IDE Tools build.cmd pcls -- build the PCL FSharp.Core libraries @@ -49,11 +51,8 @@ There are various qualifiers: build.cmd all test -- build all, run all tests build.cmd test-smoke -- build, run smoke tests - build.cmd test-coreunit -- build, run FSharp.Core tests - build.cmd test-coreclr -- build, run .NET Core tests - build.cmd test-pcls -- build, run PCL tests - build.cmd test-fsharp -- build, run tests\fsharp suite - build.cmd test-fsharpqa -- build, run tests\fsharpqa suite + build.cmd test-net40-fsharp -- build, run tests\fsharp suite for .NET Framework + build.cmd test-net40-fsharpqa -- build, run tests\fsharpqa suite for .NET Framework **Notes** To build and test Visual F# IDE Tools, you must use [Visual Studio "vNext" (aka "Dev15")](https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs.aspx). This is the one after Visual Studio 2015 (aka "Dev 14"). You must also install Visual Studio SDK (also called _Visual Studio Extensibility SDK_ on the Visual Studio installer) before building Visual F# IDE Tools. diff --git a/TESTGUIDE.md b/TESTGUIDE.md index aa8b50984b4..0f1912af583 100644 --- a/TESTGUIDE.md +++ b/TESTGUIDE.md @@ -63,9 +63,9 @@ For the FSharp and FSharpQA suites, the list of test areas and their associated tests\test.lst // FSharp suite tests\fsharpqa\source\test.lst // FSharpQA suite -Tags are in the left column, paths to to corresponding test folders are in the right column. If no tags are specified to `RunTests.cmd`, all tests will be run. +Tags are in the left column, paths to to corresponding test folders are in the right column. If no tags are specifie, all tests will be run. -If you want to re-run a particular test area, the easiest way to do so is to set a temporary tag for that area in test.lst (e.g. "RERUN"), then call `RunTests.cmd RERUN`. +If you want to re-run a particular test area, the easiest way to do so is to set a temporary tag for that area in test.lst (e.g. "RERUN"). ### Logs and output @@ -83,5 +83,5 @@ All test execution logs and result files will be dropped into the `tests\TestRes * Making the tests run faster * 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. - * 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. - * 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`). + * The FSharp and FSharpQA suites will run test cases in parallel by default. You can comment out the relevant line (look for `PARALLEL_ARG`) to disable this. + * 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 (look for `HOSTED_COMPILER`). diff --git a/VisualFSharp.sln b/VisualFSharp.sln index d70655386d3..7dddd7e3780 100644 --- a/VisualFSharp.sln +++ b/VisualFSharp.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.25618.0 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler", "src\fsharp\FSharp.Compiler\FSharp.Compiler.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" EndProject @@ -131,6 +131,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualFSharpWeb", "vsintegr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualFSharpOpenSource", "vsintegration\Vsix\VisualFSharpOpenSource\VisualFSharpOpenSource.csproj", "{E6A45CDF-B408-420F-B475-74611BEFC52B}" EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Hosted", "tests\fsharpqa\testenv\src\FSharp.Compiler.Hosted\FSharp.Compiler.Hosted.fsproj", "{4FAE092E-5366-43F5-85FA-71EAF66FA4A8}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "HostedCompilerServer", "tests\fsharpqa\testenv\src\HostedCompilerServer\HostedCompilerServer.fsproj", "{4239EFEA-E746-446A-BF7A-51FCBAB13946}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "diff", "tests\fsharpqa\testenv\src\diff\diff.fsproj", "{BF5C6D92-D053-4216-9C42-B62F5F5C5E91}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ILComparer", "tests\fsharpqa\testenv\src\ILComparer\ILComparer.fsproj", "{2E60864A-E3FF-4BCC-810F-DC7C34E6B236}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharpQA.Tests", "tests\fsharpqa\Source\FSharpQA.Tests.fsproj", "{21958DEB-133B-4760-A238-1293ED9687EC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -696,10 +706,8 @@ Global {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Debug|Any CPU.Build.0 = Debug|Any CPU {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Debug|x86.ActiveCfg = Debug|Any CPU {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Debug|x86.Build.0 = Debug|Any CPU - {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Proto|Any CPU.Build.0 = Proto|Any CPU - {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Proto|x86.ActiveCfg = Proto|Any CPU - {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Proto|x86.Build.0 = Proto|Any CPU + {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Proto|x86.ActiveCfg = Release|Any CPU {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Release|Any CPU.ActiveCfg = Release|Any CPU {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Release|Any CPU.Build.0 = Release|Any CPU {E7EC4A3E-9D57-45B8-83F5-EDDFD6CEF090}.Release|x86.ActiveCfg = Release|Any CPU @@ -708,10 +716,8 @@ Global {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.Build.0 = Debug|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.ActiveCfg = Debug|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.Build.0 = Debug|Any CPU - {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|Any CPU.Build.0 = Proto|Any CPU - {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|x86.ActiveCfg = Proto|Any CPU - {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|x86.Build.0 = Proto|Any CPU + {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {59ADCE46-9740-4079-834D-9A03A3494EBC}.Proto|x86.ActiveCfg = Release|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.ActiveCfg = Release|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.Build.0 = Release|Any CPU {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|x86.ActiveCfg = Release|Any CPU @@ -720,10 +726,8 @@ Global {58730C8B-16F5-4956-9291-BB68E17C9142}.Debug|Any CPU.Build.0 = Debug|Any CPU {58730C8B-16F5-4956-9291-BB68E17C9142}.Debug|x86.ActiveCfg = Debug|Any CPU {58730C8B-16F5-4956-9291-BB68E17C9142}.Debug|x86.Build.0 = Debug|Any CPU - {58730C8B-16F5-4956-9291-BB68E17C9142}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {58730C8B-16F5-4956-9291-BB68E17C9142}.Proto|Any CPU.Build.0 = Proto|Any CPU - {58730C8B-16F5-4956-9291-BB68E17C9142}.Proto|x86.ActiveCfg = Proto|Any CPU - {58730C8B-16F5-4956-9291-BB68E17C9142}.Proto|x86.Build.0 = Proto|Any CPU + {58730C8B-16F5-4956-9291-BB68E17C9142}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {58730C8B-16F5-4956-9291-BB68E17C9142}.Proto|x86.ActiveCfg = Release|Any CPU {58730C8B-16F5-4956-9291-BB68E17C9142}.Release|Any CPU.ActiveCfg = Release|Any CPU {58730C8B-16F5-4956-9291-BB68E17C9142}.Release|Any CPU.Build.0 = Release|Any CPU {58730C8B-16F5-4956-9291-BB68E17C9142}.Release|x86.ActiveCfg = Release|Any CPU @@ -732,14 +736,66 @@ Global {E6A45CDF-B408-420F-B475-74611BEFC52B}.Debug|Any CPU.Build.0 = Debug|Any CPU {E6A45CDF-B408-420F-B475-74611BEFC52B}.Debug|x86.ActiveCfg = Debug|Any CPU {E6A45CDF-B408-420F-B475-74611BEFC52B}.Debug|x86.Build.0 = Debug|Any CPU - {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|Any CPU.ActiveCfg = Proto|Any CPU - {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|Any CPU.Build.0 = Proto|Any CPU - {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|x86.ActiveCfg = Proto|Any CPU - {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|x86.Build.0 = Proto|Any CPU + {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {E6A45CDF-B408-420F-B475-74611BEFC52B}.Proto|x86.ActiveCfg = Release|Any CPU {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|Any CPU.Build.0 = Release|Any CPU {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|x86.ActiveCfg = Release|Any CPU {E6A45CDF-B408-420F-B475-74611BEFC52B}.Release|x86.Build.0 = Release|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Debug|x86.ActiveCfg = Debug|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Debug|x86.Build.0 = Debug|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Proto|Any CPU.Build.0 = Proto|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Proto|x86.ActiveCfg = Proto|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Proto|x86.Build.0 = Proto|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Release|Any CPU.Build.0 = Release|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Release|x86.ActiveCfg = Release|Any CPU + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8}.Release|x86.Build.0 = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|x86.ActiveCfg = Debug|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|x86.Build.0 = Debug|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Proto|x86.ActiveCfg = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|Any CPU.Build.0 = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|x86.ActiveCfg = Release|Any CPU + {4239EFEA-E746-446A-BF7A-51FCBAB13946}.Release|x86.Build.0 = Release|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Debug|x86.Build.0 = Debug|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Proto|x86.ActiveCfg = Release|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Release|Any CPU.Build.0 = Release|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Release|x86.ActiveCfg = Release|Any CPU + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91}.Release|x86.Build.0 = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|x86.ActiveCfg = Debug|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Debug|x86.Build.0 = Debug|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|Any CPU.ActiveCfg = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Proto|x86.ActiveCfg = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Release|Any CPU.Build.0 = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Release|x86.ActiveCfg = Release|Any CPU + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236}.Release|x86.Build.0 = Release|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Debug|x86.ActiveCfg = Debug|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Debug|x86.Build.0 = Debug|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Proto|Any CPU.ActiveCfg = Proto|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Proto|Any CPU.Build.0 = Proto|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Proto|x86.ActiveCfg = Proto|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Proto|x86.Build.0 = Proto|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Release|Any CPU.Build.0 = Release|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Release|x86.ActiveCfg = Release|Any CPU + {21958DEB-133B-4760-A238-1293ED9687EC}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -800,5 +856,10 @@ Global {59ADCE46-9740-4079-834D-9A03A3494EBC} = {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F} {58730C8B-16F5-4956-9291-BB68E17C9142} = {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F} {E6A45CDF-B408-420F-B475-74611BEFC52B} = {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F} + {4FAE092E-5366-43F5-85FA-71EAF66FA4A8} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} + {4239EFEA-E746-446A-BF7A-51FCBAB13946} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} + {BF5C6D92-D053-4216-9C42-B62F5F5C5E91} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} + {21958DEB-133B-4760-A238-1293ED9687EC} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449} EndGlobalSection EndGlobal diff --git a/build.cmd b/build.cmd index 278f9cad52f..d5c342d9bd6 100644 --- a/build.cmd +++ b/build.cmd @@ -1,5 +1,7 @@ @if "%_echo%"=="" echo off +setlocal enableDelayedExpansion + :ARGUMENTS_VALIDATION if /I "%1" == "--help" (goto :USAGE) @@ -19,7 +21,8 @@ echo ^ echo ^ echo ^ echo ^ -echo ^ +echo ^ +echo ^ echo. echo No arguments default to 'default', meaning this (no testing) echo. @@ -27,20 +30,19 @@ echo build.cmd net40 echo. echo.Other examples: echo. -echo. build net40 (build compiler for .NET Framework) -echo. build coreclr (build compiler for .NET Core) -echo. build vs (build Visual Studio IDE Tools) -echo. build all (build everything) -echo. build test (build and test default targets) -echo. build net40 test (build and test net40) -echo. build coreclr test (build and test net40) -echo. build vs test (build and test net40) -echo. build all test (build and test net40) -echo. -echo The example below run pcls, vs and qa: +echo. build.cmd net40 (build compiler for .NET Framework) +echo. build.cmd coreclr (build compiler for .NET Core) +echo. build.cmd vs (build Visual Studio IDE Tools) +echo. build.cmd all (build everything) +echo. build.cmd test (build and test default targets) +echo. build.cmd net40 test (build and test net40) +echo. build.cmd coreclr test (build and test net40) +echo. build.cmd vs test (build and test net40) +echo. build.cmd all test (build and test net40) +echo. build.cmd nobuild test include Conformance (tests marked with Conformance tag) +echo. build.cmd nobuild test exclude Slow (no tests marked with Slow tag) echo. -echo build.cmd pcls vs debug -exit /b 1 +goto :success :ARGUMENTS_OK @@ -50,6 +52,7 @@ if /i '%FSC_BUILD_SETUP%' == '' (set FSC_BUILD_SETUP=1) set BUILD_PROTO_WITH_CORECLR_LKG=0 set BUILD_PROTO=0 +set BUILD_PHASE=1 set BUILD_NET40=0 set BUILD_CORECLR=0 set BUILD_PORTABLE=0 @@ -67,21 +70,23 @@ set TEST_CORECLR_COREUNIT_SUITE=0 set TEST_CORECLR_FSHARP_SUITE=0 set TEST_PORTABLE_COREUNIT_SUITE=0 set TEST_VS_IDEUNIT_SUITE=0 -set TEST_TAGS= -set SKIP_EXPENSIVE_TESTS=1 +set INCLUDE_TEST_SPEC_NUNIT= +set EXCLUDE_TEST_SPEC_NUNIT=cat == Expensive +set INCLUDE_TEST_TAGS= +set EXCLUDE_TEST_TAGS=Expensive -REM ------------------ Parse all arguments ----------------------- -setlocal enableDelayedExpansion +REM ------------------ Parse all arguments ----------------------- set _autoselect=1 set _autoselect_tests=0 set /a counter=0 for /l %%x in (1 1 9) do ( set /a counter=!counter!+1 - call :SET_CONFIG %%!counter! "!counter!" + set /a nextcounter=!counter!+1 + call :PROCESS_ARG %%!counter! %%!nextcounter! "!counter!" ) -for %%i in (%BUILD_FSC_DEFAULT%) do ( call :SET_CONFIG %%i ) +for %%i in (%BUILD_FSC_DEFAULT%) do ( call :PROCESS_ARG %%i ) REM apply defaults @@ -110,21 +115,16 @@ if /i '%_autoselect_tests%' == '1' ( ) ) -setlocal disableDelayedExpansion -echo. - goto :MAIN REM ------------------ Procedure to parse one argument ----------------------- -:SET_CONFIG +:PROCESS_ARG set ARG=%~1 +set ARG2=%~2 if "%ARG%" == "1" if "%2" == "" (set ARG=default) if "%2" == "" if not "%ARG%" == "default" goto :EOF -echo Parse argument %ARG% - - if /i '%ARG%' == 'net40' ( set _autoselect=0 set BUILD_NET40=1 @@ -139,7 +139,6 @@ if /i '%ARG%' == 'coreclr' ( if /i '%ARG%' == 'pcls' ( set _autoselect=0 set BUILD_PORTABLE=1 - set TEST_PORTABLE_COREUNIT_SUITE=1 ) if /i '%ARG%' == 'vs' ( @@ -148,6 +147,9 @@ if /i '%ARG%' == 'vs' ( set BUILD_VS=1 ) +if /i '%ARG%' == 'nobuild' ( + set BUILD_PHASE=0 +) if /i '%ARG%' == 'all' ( set _autoselect=0 set BUILD_PROTO=1 @@ -200,8 +202,8 @@ if /i '%ARG%' == 'ci_part2' ( REM what we do set BUILD_PROTO_WITH_CORECLR_LKG=1 - set BUILD_PROTO=1 - set BUILD_NET40=1 + set BUILD_PROTO=1 + set BUILD_NET40=1 set BUILD_CORECLR=1 set BUILD_PORTABLE=1 @@ -233,6 +235,22 @@ if /i '%ARG%' == 'test' ( set _autoselect_tests=1 ) +if /i '%ARG%' == 'include' ( + set /a counter=!counter!+1 + if '!INCLUDE_TEST_SPEC_NUNIT!' == '' ( set INCLUDE_TEST_SPEC_NUNIT=cat == %ARG2% ) else (set INCLUDE_TEST_SPEC_NUNIT=cat == %ARG2% or !INCLUDE_TEST_SPEC_NUNIT! ) + if '!INCLUDE_TEST_TAGS!' == '' ( set INCLUDE_TEST_TAGS=%ARG2% ) else (set INCLUDE_TEST_TAGS=%ARG2%;!INCLUDE_TEST_TAGS! ) +) +if /i '%ARG%' == 'exclude' ( + set /a counter=!counter!+1 + if '!EXCLUDE_TEST_SPEC_NUNIT!' == '' ( set EXCLUDE_TEST_SPEC_NUNIT=cat == %ARG2% ) else (set EXCLUDE_TEST_SPEC_NUNIT=cat == %ARG2% or !EXCLUDE_TEST_SPEC_NUNIT! ) + if '!EXCLUDE_TEST_TAGS!' == '' ( set EXCLUDE_TEST_TAGS=%ARG2% ) else (set EXCLUDE_TEST_TAGS=%ARG2%;!EXCLUDE_TEST_TAGS! ) +) +if /i '%ARG%' == 'noskip' ( + set EXCLUDE_TEST_SPEC_NUNIT= + set EXCLUDE_TEST_TAGS= +) + + if /i '%ARG%' == 'test-all' ( set _autoselect=0 set BUILD_PROTO=1 @@ -250,56 +268,47 @@ if /i '%ARG%' == 'test-all' ( set TEST_CORECLR_COREUNIT_SUITE=1 set TEST_VS_IDEUNIT_SUITE=1 - set SKIP_EXPENSIVE_TESTS=0 -) - -if /i '%ARG%' == 'test-smoke' ( - REM Smoke tests are a very small quick subset of tests - - REM what we do - set TEST_NET40_FSHARP_SUITE=1 - set TEST_TAGS=Smoke - + set EXCLUDE_TEST_TAGS= ) -if /i '%ARG%' == 'test-net40-fsharpqa-suite' ( +if /i '%ARG%' == 'test-net40-fsharpqa' ( set BUILD_NET40=1 set BUILD_PORTABLE=1 set TEST_NET40_FSHARPQA_SUITE=1 ) -if /i '%ARG%' == 'test-compiler-unit-suite' ( +if /i '%ARG%' == 'test-compiler-unit' ( set BUILD_NET40=1 set TEST_NET40_COMPILERUNIT_SUITE=1 ) -if /i '%ARG%' == 'test-net40-coreunit-suite' ( +if /i '%ARG%' == 'test-net40-coreunit' ( set BUILD_NET40=1 set TEST_NET40_COREUNIT_SUITE=1 ) -if /i '%ARG%' == 'test-coreclr-coreunit-suite' ( +if /i '%ARG%' == 'test-coreclr-coreunit' ( set BUILD_PROTO_WITH_CORECLR_LKG=1 set BUILD_CORECLR=1 set TEST_CORECLR_COREUNIT_SUITE=1 ) -if /i '%ARG%' == 'test-pcl-coreunit-suite' ( +if /i '%ARG%' == 'test-pcl-coreunit' ( set BUILD_NET40=1 set BUILD_PORTABLE=1 set TEST_PORTABLE_COREUNIT_SUITE=1 ) -if /i '%ARG%' == 'test-net40-fsharp-suite' ( +if /i '%ARG%' == 'test-net40-fsharp' ( set BUILD_NET40=1 set BUILD_PORTABLE=1 set TEST_NET40_FSHARP_SUITE=1 ) -if /i '%ARG%' == 'test-coreclr-fsharp-suite' ( +if /i '%ARG%' == 'test-coreclr-fsharp' ( set BUILD_CORECLR=1 set TEST_CORECLR_FSHARP_SUITE=1 ) @@ -309,6 +318,11 @@ if /i '%ARG%' == 'publicsign' ( ) goto :EOF +:: Note: "goto :EOF" returns from an in-batchfile "call" command +:: in preference to returning from the entire batch file. + + +REM ------------------ Report config ----------------------- :MAIN @@ -334,8 +348,11 @@ echo TEST_CORECLR_COREUNIT_SUITE=%TEST_CORECLR_COREUNIT_SUITE% echo TEST_CORECLR_FSHARP_SUITE=%TEST_CORECLR_FSHARP_SUITE% echo TEST_PORTABLE_COREUNIT_SUITE=%TEST_PORTABLE_COREUNIT_SUITE% echo TEST_VS_IDEUNIT_SUITE=%TEST_VS_IDEUNIT_SUITE% -echo TEST_TAGS=%TEST_TAGS% -echo SKIP_EXPENSIVE_TESTS=%SKIP_EXPENSIVE_TESTS% +echo INCLUDE_TEST_SPEC_NUNIT=%INCLUDE_TEST_SPEC_NUNIT% +echo EXCLUDE_TEST_SPEC_NUNIT=%EXCLUDE_TEST_SPEC_NUNIT% +echo EXCLUDE_TEST_TAGS=%EXCLUDE_TEST_TAGS% +echo INCLUDE_TEST_TAGS=%INCLUDE_TEST_TAGS% + echo. echo ---------------- Done with arguments, starting preparation ----------------- @@ -399,7 +416,8 @@ if defined APPVEYOR ( set _msbuildexe=%_msbuildexe% /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" ) ) -set msbuildflags=/maxcpucount %_nrswitch% /nologo +REM set msbuildflags=/maxcpucount %_nrswitch% /nologo +set msbuildflags=%_nrswitch% /nologo set _ngenexe="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ngen.exe" if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure @@ -495,13 +513,14 @@ if '%BUILD_PROTO%' == '1' ( echo ---------------- Done with proto, starting build ------------------------ -%_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% -@if ERRORLEVEL 1 echo Error: '%_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN%' failed && goto :failure - +if '%BUILD_PHASE%' == '1' ( + %_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% + @if ERRORLEVEL 1 echo Error: '%_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN%' failed && goto :failure +) echo ---------------- Done with build, starting update/prepare --------------- -if 'BUILD_NET40' == '1' ( +if '%BUILD_NET40%' == '1' ( call src\update.cmd %BUILD_CONFIG% -ngen ) @@ -539,107 +558,375 @@ if '%BUILD_CORECLR%' == '1' ( ) -if 'TEST_NET40_COMPILERUNIT_SUITE' == '0' and 'TEST_PORTABLE_COREUNIT_SUITE' == '0' and 'TEST_CORECLR_COREUNIT_SUITE' == '0' and 'TEST_VS_IDEUNIT_SUITE' == '0' and 'TEST_NET40_FSHARP_SUITE' == '0' and 'TEST_NET40_FSHARPQA_SUITE' == '0' goto :finished +if 'TEST_NET40_COMPILERUNIT_SUITE' == '0' and 'TEST_PORTABLE_COREUNIT_SUITE' == '0' and 'TEST_CORECLR_COREUNIT_SUITE' == '0' and 'TEST_VS_IDEUNIT_SUITE' == '0' and 'TEST_NET40_FSHARP_SUITE' == '0' and 'TEST_NET40_FSHARPQA_SUITE' == '0' goto :success echo ---------------- Done with update, starting tests ----------------------- pushd tests + +rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) +rem Note: each setlocal must be matched by an executed endlocal +setlocal disableDelayedExpansion +if "%INCLUDE_TEST_SPEC_NUNIT%" == "" ( + if NOT "%EXCLUDE_TEST_SPEC_NUNIT%" == "" ( + set WHERE_ARG_NUNIT=--where "!(%EXCLUDE_TEST_SPEC_NUNIT%)" + ) +) +if NOT "%INCLUDE_TEST_SPEC_NUNIT%" == "" ( + if "%EXCLUDE_TEST_SPEC_NUNIT%" == "" ( + set WHERE_ARG_NUNIT=--where "%INCLUDE_TEST_SPEC_NUNIT%" + ) + if NOT "%EXCLUDE_TEST_SPEC_NUNIT%" == "" ( + set WHERE_ARG_NUNIT=--where "%INCLUDE_TEST_SPEC_NUNIT% and !(%EXCLUDE_TEST_SPEC_NUNIT%)" + ) +) +if NOT "%INCLUDE_TEST_TAGS%" == "" ( + set INCLUDE_ARG_RUNALL=-ttags:%INCLUDE_TEST_TAGS% +) +if NOT "%EXCLUDE_TEST_TAGS%" == "" ( + set EXCLUDE_ARG_RUNALL=-nottags:%EXCLUDE_TEST_TAGS% +) +echo WHERE_ARG_NUNIT=%WHERE_ARG_NUNIT% +rem Re-enable delayed expansion. We can't use endlocal here since we want to keep the variables we've computed. +rem Note: each setlocal must be matched by an executed endlocal +setlocal enableDelayedExpansion + + +set NUNITPATH=%~dp0tests\fsharpqa\testenv\bin\nunit\ +set NUNIT3_CONSOLE=%~dp0packages\NUnit.Console.3.0.0\tools\nunit3-console.exe +set link_exe=%~dp0packages\VisualCppTools.14.0.24519-Pre\lib\native\bin\link.exe +if not exist "%link_exe%" ( + echo Error: failed to find '%link_exe%' use nuget to restore the VisualCppTools package + goto :failed_tests +) + +if /I not '%single_threaded%' == 'true' (set PARALLEL_ARG=-procs:%NUMBER_OF_PROCESSORS%) else set PARALLEL_ARG=-procs:0 + +set FSCBINPATH=%~dp0%BUILD_CONFIG%\net40\bin +set RESULTSDIR=%~dp0tests\TestResults +if not exist "%RESULTSDIR%" (mkdir "%RESULTSDIR%") + +ECHO FSCBINPATH=%FSCBINPATH% +ECHO RESULTSDIR=%RESULTSDIR% +ECHO link_exe=%link_exe% +ECHO NUNIT3_CONSOLE=%NUNIT3_CONSOLE% +ECHO NUNITPATH=%NUNITPATH% + +REM ---------------- net40-fsharp ----------------------- + + +set XMLFILE=%RESULTSDIR%\test-net40-fsharp-results.xml +set OUTPUTFILE=%RESULTSDIR%\test-net40-fsharp-output.log +set ERRORFILE=%RESULTSDIR%\test-net40-fsharp-errors.log + +set command="%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\FSharp.Tests.FSharp.dll" --framework:V4.0 --work:"%FSCBINPATH%" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --result:"!XMLFILE!;format=nunit2" + if '%TEST_NET40_FSHARP_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% net40-fsharp-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% net40-fsharp-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - type testresults\net40-fsharp-suite-errors.log - echo Error: 'Running tests net40-fsharp-suite %TEST_TAGS%' failed + rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) + rem Note: each setlocal must be matched by an executed endlocal + setlocal disableDelayedExpansion + echo %command% %WHERE_ARG_NUNIT% + %command% %WHERE_ARG_NUNIT% + endlocal + + call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!" + + if NOT '!saved_errorlevel!' == '0' ( + type "!ERRORFILE!" + echo Error: 'Running tests net40-fsharp' failed goto :failed_tests ) ) + +REM ---------------- net40-fsharpqa ----------------------- + +set OSARCH=%PROCESSOR_ARCHITECTURE% + +rem Set this to 1 in order to use an external compiler host process +rem This only has an effect when running the FSHARPQA tests, but can +rem greatly speed up execution since fsc.exe does not need to be spawned thousands of times +set HOSTED_COMPILER=1 + +set X86_PROGRAMFILES=%ProgramFiles% +if "%OSARCH%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)% + +set SYSWOW64=. +if "%OSARCH%"=="AMD64" set SYSWOW64=SysWoW64 + +if not "%OSARCH%"=="x86" set REGEXE32BIT=%WINDIR%\syswow64\reg.exe + + FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B +if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B +if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B +if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B +if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B + +set PATH=%PATH%;%WINSDKNETFXTOOLS% +for /d %%i in (%WINDIR%\Microsoft.NET\Framework\v4.0.?????) do set CORDIR=%%i +set PATH=%PATH%;%CORDIR% + +set REGEXE32BIT=reg.exe + +IF NOT DEFINED SNEXE32 IF EXIST "%WINSDKNETFXTOOLS%sn.exe" set SNEXE32=%WINSDKNETFXTOOLS%sn.exe +IF NOT DEFINED SNEXE64 IF EXIST "%WINSDKNETFXTOOLS%x64\sn.exe" set SNEXE64=%WINSDKNETFXTOOLS%x64\sn.exe +IF NOT DEFINED ildasm IF EXIST "%WINSDKNETFXTOOLS%ildasm.exe" set ildasm=%WINSDKNETFXTOOLS%ildasm.exe + + if '%TEST_NET40_FSHARPQA_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% net40-fsharpqa-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% net40-fsharpqa-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - echo type testresults\net40-fsharpqa-suite-results.log - type testresults\net40-fsharpqa-suite-results.log - echo type testresults\net40-fsharpqa-suite-errors.log - type testresults\net40-fsharpqa-suite-errors.log - echo Error: 'Running tests net40-fsharpqa-suite %TEST_TAGS%' failed + + set FSC=!FSCBINPATH!\fsc.exe + set PATH=!FSCBINPATH!;!PATH! + + set FSCVPREVBINPATH=!X86_PROGRAMFILES!\Microsoft SDKs\F#\4.0\Framework\v4.0 + set FSCVPREV=!FSCVPREVBINPATH!\fsc.exe + + REM == VS-installed paths to FSharp.Core.dll + set FSCOREDLLPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.1.0 + set FSCOREDLL20PATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v2.0\2.3.0.0 + set FSCOREDLLPORTABLEPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETPortable\3.47.41.0 + set FSCOREDLLNETCOREPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETCore\3.7.41.0 + set FSCOREDLLNETCORE78PATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETCore\3.78.41.0 + set FSCOREDLLNETCORE259PATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETCore\3.259.41.0 + set FSDATATPPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0\Type Providers + set FSCOREDLLVPREVPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0 + + REM == open source logic + if exist "!FSCBinPath!\FSharp.Core.dll" set FSCOREDLLPATH=!FSCBinPath! + if exist "!FSCBinPath!\..\..\net20\bin\FSharp.Core.dll" set FSCOREDLL20PATH=!FSCBinPath!\..\..\net20\bin + if exist "!FSCBinPath!\..\..\portable47\bin\FSharp.Core.dll" set FSCOREDLLPORTABLEPATH=!FSCBinPath!\..\..\portable47\bin + if exist "!FSCBinPath!\..\..\portable7\bin\FSharp.Core.dll" set FSCOREDLLNETCOREPATH=!FSCBinPath!\..\..\portable7\bin + IF exist "!FSCBinPath!\..\..\portable78\bin\FSharp.Core.dll" set FSCOREDLLNETCORE78PATH=!FSCBinPath!\..\..\portable78\bin + IF exist "!FSCBinPath!\..\..\portable259\bin\FSharp.Core.dll" set FSCOREDLLNETCORE259PATH=!FSCBinPath!\..\..\portable259\bin + + set FSCOREDLLPATH=!FSCOREDLLPATH!\FSharp.Core.dll + set FSCOREDLL20PATH=!FSCOREDLL20PATH!\FSharp.Core.dll + set FSCOREDLLPORTABLEPATH=!FSCOREDLLPORTABLEPATH!\FSharp.Core.dll + set FSCOREDLLNETCOREPATH=!FSCOREDLLNETCOREPATH!\FSharp.Core.dll + set FSCOREDLLNETCORE78PATH=!FSCOREDLLNETCORE78PATH!\FSharp.Core.dll + set FSCOREDLLNETCORE259PATH=!FSCOREDLLNETCORE259PATH!\FSharp.Core.dll + set FSCOREDLLVPREVPATH=!FSCOREDLLVPREVPATH!\FSharp.Core.dll + + where.exe perl > NUL 2> NUL + if errorlevel 1 ( + echo Error: perl is not in the PATH, it is required for the net40-fsharpqa test suite + goto :failed_tests + ) + + set OUTPUTFILE=test-net40-fsharpqa-results.log + set ERRORFILE=test-net40-fsharpqa-errors.log + set FAILENV=test-net40-fsharpqa-errors + + + pushd %~dp0tests\fsharpqa\source + echo perl %~dp0tests\fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results !OUTPUTFILE! -log !ERRORFILE! -fail !FAILENV! -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG% + perl %~dp0tests\fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results !OUTPUTFILE! -log !ERRORFILE! -fail !FAILENV! -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG% + + popd + if ERRORLEVEL 1 ( + type "%RESULTSDIR%\!OUTPUTFILE!" + type "%RESULTSDIR%\!ERRORFILE!" + echo Error: 'Running tests net40-fsharpqa' failed goto :failed_tests ) ) +REM ---------------- net40-compilerunit ----------------------- + +set XMLFILE=%RESULTSDIR%\test-net40-compilerunit-results.xml +set OUTPUTFILE=%RESULTSDIR%\test-net40-compilerunit-output.log +set ERRORFILE=%RESULTSDIR%\test-net40-compilerunit-errors.log +set command="%NUNIT3_CONSOLE%" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Compiler.Unittests.dll" if '%TEST_NET40_COMPILERUNIT_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% net40-compilerunit-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% net40-compilerunit-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - type testresults\net40-compilerunit-suite-output.log - type testresults\net40-compilerunit-suite-errors.log - echo Error: 'Running tests net40-compilerunit-suite' failed + + rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) + rem Note: each setlocal must be matched by an executed endlocal + setlocal disableDelayedExpansion + echo %command% %WHERE_ARG_NUNIT% + %command% %WHERE_ARG_NUNIT% + endlocal + + call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!" + if NOT '!saved_errorlevel!' == '0' ( + type "!OUTPUTFILE!" + type "!ERRORFILE!" + echo Error: 'Running tests net40-compilerunit' failed goto :failed_tests ) ) + +REM ---------------- net40-coreunit ----------------------- + +set XMLFILE=%RESULTSDIR%\test-net40-coreunit-results.xml +set OUTPUTFILE=%RESULTSDIR%\test-net40-coreunit-output.log +set ERRORFILE=%RESULTSDIR%\test-net40-coreunit-errors.log +set command="%NUNIT3_CONSOLE%" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" "%FSCBINPATH%\FSharp.Core.Unittests.dll" if '%TEST_NET40_COREUNIT_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% net40-coreunit-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% net40-coreunit-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - type testresults\net40-coreunit-suite-output.log - type testresults\net40-coreunit-suite-errors.log - echo Error: 'Running tests net40-coreunit-suite' failed + + rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) + rem Note: each setlocal must be matched by an executed endlocal + setlocal disableDelayedExpansion + echo %command% %WHERE_ARG_NUNIT% + %command% %WHERE_ARG_NUNIT% + endlocal + + call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!" + if NOT '!saved_errorlevel!' == '0' ( + type "!OUTPUTFILE!" + type "!ERRORFILE!" + echo Error: 'Running tests net40-coreunit' failed goto :failed_tests ) ) + +REM ---------------- portable-coreunit ----------------------- + +set XMLFILE=%RESULTSDIR%\test-portable-coreunit-results.xml +set OUTPUTFILE=%RESULTSDIR%\test-portable-coreunit-output.log +set ERRORFILE=%RESULTSDIR%\test-portable-coreunit-errors.log +set command="%NUNIT3_CONSOLE%" /framework:V4.0 /result="!XMLFILE!;format=nunit2" /output="!OUTPUTFILE!" /err="!ERRORFILE!" /work="%FSCBINPATH%" "%FSCBINPATH%\..\..\portable7\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable47\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable78\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable259\bin\FSharp.Core.Unittests.dll" + if '%TEST_PORTABLE_COREUNIT_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% portable-coreunit-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% portable-coreunit-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - @echo "type testresults\portable-coreunit-suite-output.log " - @echo "type testresults\portable-coreunit-suite-errors.log " - type testresults\portable-coreunit-suite-errors.log - echo Error: 'Running tests portable-coreunit-suite' failed + rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) + rem Note: each setlocal must be matched by an executed endlocal + setlocal disableDelayedExpansion + echo %command% %WHERE_ARG_NUNIT% + %command% %WHERE_ARG_NUNIT% + endlocal + + + call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!" + if NOT '!saved_errorlevel!' == '0' ( + type "!OUTPUTFILE!" + type "!ERRORFILE!" + echo Error: 'Running tests portable-coreunit' failed goto :failed_tests ) ) +REM ---------------- coreclr-coreunit ----------------------- + +set XMLFILE=%RESULTSDIR%\test-coreclr-coreunit-results.xml +set OUTPUTFILE=%RESULTSDIR%\test-coreclr-coreunit-output.log +set ERRORFILE=%RESULTSDIR%\test-coreclr-coreunit-errors.log + +set architecture=win7-x64 +set CORERUNPATH=%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\!architecture! + +set command="!CORERUNPATH!\corerun.exe" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\fsharp.core.unittests\FSharp.Core.Unittests.exe" if '%TEST_CORECLR_COREUNIT_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% coreclr-coreunit-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% coreclr-coreunit-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - type testresults\coreclr-coreunit-suite-output.log - type testresults\coreclr-coreunit-suite-errors.log - echo Error: 'Running tests coreclr-coreunit-suite %TEST_TAGS%' failed + + rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) + rem Note: each setlocal must be matched by an executed endlocal + setlocal disableDelayedExpansion + echo %command% %WHERE_ARG_NUNIT% + %command% %WHERE_ARG_NUNIT% + endlocal + + rem call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!" + + if ERRORLEVEL 1 ( + rem type "!OUTPUTFILE!" + rem type "!ERRORFILE!" + echo Error: 'Running tests coreclr-coreunit' failed goto :failed_tests ) ) + +REM ---------------- coreclr-fsharp ----------------------- + +set single_threaded=true +set permutations=FSC_CORECLR +set XMLFILE=%RESULTSDIR%\test-coreclr-fsharp-results.xml +set OUTPUTFILE=%RESULTSDIR%\test-coreclr-fsharp-output.log +set ERRORFILE=%RESULTSDIR%\test-coreclr-fsharp-errors.log + +set command="%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\coreclr\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 --work:"%FSCBINPATH%" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --result:"!XMLFILE!;format=nunit2" + if '%TEST_CORECLR_FSHARP_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% coreclr-fsharp-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% coreclr-fsharp-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - type testresults\coreclr-fsharp-suite-output.log - type testresults\coreclr-fsharp-suite-errors.log - echo Error: 'Running tests coreclr-fsharp-suite %TEST_TAGS%' failed + rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) + rem Note: each setlocal must be matched by an executed endlocal + setlocal disableDelayedExpansion + echo %command% %WHERE_ARG_NUNIT% + %command% %WHERE_ARG_NUNIT% + endlocal + + call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!" + if NOT '!saved_errorlevel!' == '0' ( + type "!OUTPUTFILE!" + type "!ERRORFILE!" + echo Error: 'Running tests coreclr-fsharp' failed goto :failed_tests ) ) + + +REM ---------------- vs-ideunit ----------------------- + +set XMLFILE=%RESULTSDIR%\test-vs-ideunit-results.xml +set OUTPUTFILE=%RESULTSDIR%\test-vs-ideunit-output.log +set ERRORFILE=%RESULTSDIR%\test-vs-ideunit-errors.log + +set command="%NUNIT3_CONSOLE%" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" --workers=1 --agents=1 --full "%FSCBINPATH%\VisualFSharp.Unittests.dll" if '%TEST_VS_IDEUNIT_SUITE%' == '1' ( - echo call RunTests.cmd %BUILD_CONFIG% vs-ideunit-suite %TEST_TAGS% - call RunTests.cmd %BUILD_CONFIG% vs-ideunit-suite %TEST_TAGS% - @if ERRORLEVEL 1 ( - type testresults\vs-ideunit-suite-output.log - type testresults\vs-ideunit-suite-errors.log - echo Error: 'Running tests vs-ideunit-suite %TEST_TAGS%' failed + rem Turn off delayed expansion when manipulating variables where a ! may appear in the argument text (CMD batch file oddity) + rem Note: each setlocal must be matched by an executed endlocal + pushd %FSCBINPATH% + setlocal disableDelayedExpansion + echo %command% %WHERE_ARG_NUNIT% + %command% %WHERE_ARG_NUNIT% + endlocal + popd + call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!" + if NOT '!saved_errorlevel!' == '0' ( + type "!OUTPUTFILE!" + type "!ERRORFILE!" + echo Error: 'Running tests vs-ideunit' failed goto :failed_tests ) ) -:finished -@echo "Finished" +:successful_tests popd -goto :eof +endlocal +endlocal +goto :success :failed_tests popd +endlocal +endlocal +goto :failure + +REM ------ upload test results procedure ------------------------------------- + +:UPLOAD_TEST_RESULTS + +set saved_errorlevel=%errorlevel% +echo Saved errorlevel %saved_errorlevel% + +rem See +if not defined APPVEYOR goto :SKIP_APPVEYOR_UPLOAD + +echo powershell -File Upload-Results.ps1 "%~1" + powershell -File Upload-Results.ps1 "%~1" + +:SKIP_APPVEYOR_UPLOAD + +goto :EOF +:: Note: "goto :EOF" returns from an in-batchfile "call" command +:: in preference to returning from the entire batch file. + +REM ------ exit ------------------------------------- + :failure +endlocal exit /b 1 + +:success +endlocal +exit /b 0 diff --git a/src/Microbuild.Settings.targets b/src/Microbuild.Settings.targets index dbd0730806e..2a78674eb4b 100644 --- a/src/Microbuild.Settings.targets +++ b/src/Microbuild.Settings.targets @@ -157,7 +157,7 @@ } var fileContents = stringBuilder.ToString(); - AssemblyFileVersionPath = Path.Combine(Path.GetTempPath(), string.Join(".", AssemblyName, "AssemblyFileVersion", Language)); + AssemblyFileVersionPath = Path.Combine(Path.GetTempPath(), string.Join(".", AssemblyName, ProductVersion, "AssemblyFileVersion", Language)); if (File.Exists(AssemblyFileVersionPath) && File.ReadAllText(AssemblyFileVersionPath) == fileContents) { diff --git a/src/update.fs b/src/update.fs deleted file mode 100644 index d79793ada79..00000000000 --- a/src/update.fs +++ /dev/null @@ -1,204 +0,0 @@ - -module UpdateCmd - -open System.IO -open NUnit.Framework -open Microsoft.Win32 - -open PlatformHelpers -open FSharpTestSuiteTypes - -type Configuration = - | DEBUG - | RELEASE - override this.ToString() = - match this with - | DEBUG -> "Debug" - | RELEASE -> "Release" - -type updateCmdArgs = - { Configuration : Configuration - Ngen : bool } - -let private regQuery = WindowsPlatform.regQuery - -let private checkResult result = - match result with - | CmdResult.ErrorLevel (msg, err) -> Failure (RunError.ProcessExecError (msg, err, sprintf "ERRORLEVEL %d" err)) - | CmdResult.Success -> Success () - -let updateCmd envVars args = attempt { - // @echo off - // setlocal - ignore "useless" - - // if /i "%1" == "debug" goto :ok - // if /i "%1" == "release" goto :ok - ignore "already validated input" - - // echo adding required strong name verification skipping, and NGening built binaries - // echo Usage: - // echo update.cmd debug [-ngen] - // echo update.cmd release [-ngen] - // exit /b 1 - ignore "useless help" - - //:ok - let env k () = match envVars |> Map.tryFind k with None -> Failure (sprintf "environment variable '%s' not found" k) | Some x -> Success x - let ``~dp0`` = __SOURCE_DIRECTORY__ - let exec exe args = - log "%s %s" exe args - use toLog = redirectToLog () - Process.exec { RedirectError = Some toLog.Post; RedirectOutput = Some toLog.Post; RedirectInput = None } ``~dp0`` envVars exe args - - // set BINDIR=%~dp0..\%1\net40\bin - let! binDir = env "FSCBINPATH" - - // if /i "%PROCESSOR_ARCHITECTURE%"=="x86" set X86_PROGRAMFILES=%ProgramFiles% - // if /I "%PROCESSOR_ARCHITECTURE%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)% - let processorArchitecture = WindowsPlatform.processorArchitecture envVars - let x86_ProgramFiles = WindowsPlatform.x86ProgramFilesDirectory envVars processorArchitecture - - // if exist "%WindowsSDK_ExecutablePath_x64%" set WINSDKNETFXTOOLS_X64=%WindowsSDK_ExecutablePath_x64% - // if exist "%WindowsSDK_ExecutablePath_x86%" set WINSDKNETFXTOOLS_X86=%WindowsSDK_ExecutablePath_x86% - - let WINSDKNETFXTOOLS_X86, WINSDKNETFXTOOLS_X64 = - let EnvironmentPath var = - match env var () with - | Success x -> if Directory.Exists(x) then x else "" - | _ -> "" - let WindowsSDK_ExecutablePath_x64 = EnvironmentPath "WindowsSDK_ExecutablePath_x64" - let WindowsSDK_ExecutablePath_x86 = EnvironmentPath "WindowsSDK_ExecutablePath_x86" - if WindowsSDK_ExecutablePath_x86 <> "" || WindowsSDK_ExecutablePath_x64 <> "" then - WindowsSDK_ExecutablePath_x86,WindowsSDK_ExecutablePath_x64 - else - let allWINSDKNETFXTOOLS = - let REGEXE32BIT path value = - let hklm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32) - match hklm32 |> regQuery path value with - | Some (:? string as d) -> Some d - | Some _ | None -> None - seq { - // FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B - yield REGEXE32BIT @"Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\WinSDK-NetFx40Tools" "InstallationFolder" - yield REGEXE32BIT @"Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6.1\WinSDK-NetFx40Tools" "InstallationFolder" - yield REGEXE32BIT @"Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" "InstallationFolder" - - // if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B - yield REGEXE32BIT @"Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" "InstallationFolder" - // if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B - yield REGEXE32BIT @"Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" "InstallationFolder" - // if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B - yield REGEXE32BIT @"Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" "InstallationFolder" - // if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B - yield REGEXE32BIT @"Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" "InstallationFolder" - } - - match allWINSDKNETFXTOOLS |> Seq.tryPick id with - | Some sdk -> sdk, sdk + @"x64\" - | None -> "", "" - - let SN32 = WINSDKNETFXTOOLS_X86+"sn.exe" - let SN64 = WINSDKNETFXTOOLS_X64+"sn.exe" - - - // set NGEN32=%windir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe - // set NGEN64=%windir%\Microsoft.NET\Framework64\v4.0.30319\ngen.exe - let! windir = env "windir" - let NGEN32 = windir/"Microsoft.NET"/"Framework"/"v4.0.30319"/"ngen.exe" - let NGEN64 = windir/"Microsoft.NET"/"Framework64"/"v4.0.30319"/"ngen.exe" - - let checkResult = function CmdResult.ErrorLevel (msg, err) -> Failure (sprintf "%s. ERRORLEVEL %d" msg err) | CmdResult.Success -> Success () - - let ngen32 = Commands.ngen exec NGEN32 >> checkResult - let ngen64 = Commands.ngen exec NGEN64 >> checkResult - let sn32 = exec SN32 >> checkResult - let sn64 = exec SN64 >> checkResult - - // rem Disable strong-name validation for F# binaries built from open source that are signed with the microsoft key - // %SN32% -Vr FSharp.Core,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.Build,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.Compiler.Interactive.Settings,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.Compiler.Hosted,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.Compiler,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.Compiler.Server.Shared,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.Editor,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.LanguageService,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.LanguageService.Base,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.LanguageService.Compiler,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.ProjectSystem.Base,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.ProjectSystem.FSharp,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.ProjectSystem.PropertyPages,b03f5f7f11d50a3a - // %SN32% -Vr FSharp.VS.FSI,b03f5f7f11d50a3a - // %SN32% -Vr Unittests,b03f5f7f11d50a3a - // %SN32% -Vr Salsa,b03f5f7f11d50a3a - - let strongName (snExe: string -> Result<_,_>) = attempt { - let all = - [ "FSharp.Core"; - "FSharp.Build"; - "FSharp.Compiler.Interactive.Settings"; - "FSharp.Compiler.Hosted"; - "FSharp.Compiler"; - "FSharp.Compiler.Server.Shared"; - "FSharp.Editor"; - "FSharp.LanguageService"; - "FSharp.LanguageService.Base"; - "FSharp.LanguageService.Compiler"; - "FSharp.ProjectSystem.Base"; - "FSharp.ProjectSystem.FSharp"; - "FSharp.ProjectSystem.PropertyPages"; - "FSharp.VS.FSI"; - "VisualFSharp.Unittests"; - "VisualFSharp.Salsa" ] - for a in all do - snExe (sprintf " -Vr %s,b03f5f7f11d50a3a" a) |> ignore // ignore result - SN is not needed for tests to pass, and this fails without admin rights - - } - - do! strongName sn32 - - //if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" ( - do! if processorArchitecture = AMD64 then - // %SN64% -Vr FSharp.Core,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.Build,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.Compiler.Interactive.Settings,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.Compiler.Hosted,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.Compiler,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.Compiler.Server.Shared,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.Editor,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.LanguageService,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.LanguageService.Base,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.LanguageService.Compiler,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.ProjectSystem.Base,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.ProjectSystem.FSharp,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.ProjectSystem.PropertyPages,b03f5f7f11d50a3a - // %SN64% -Vr FSharp.VS.FSI,b03f5f7f11d50a3a - // %SN64% -Vr Unittests,b03f5f7f11d50a3a - // %SN64% -Vr Salsa,b03f5f7f11d50a3a - strongName sn64 - else - (fun () -> Success ()) - //) - - // rem NGen fsc, fsi, fsiAnyCpu, and FSharp.Build.dll - // if /i not "%2"=="-ngen" goto :donengen - - if args.Ngen then - // "%NGEN32%" install "%BINDIR%\fsc.exe" /queue:1 - // "%NGEN32%" install "%BINDIR%\fsi.exe" /queue:1 - // "%NGEN32%" install "%BINDIR%\FSharp.Build.dll" /queue:1 - // "%NGEN32%" executeQueuedItems 1 - ngen32 [binDir/"fsc.exe"; binDir/"fsi.exe"; binDir/"FSharp.Build.dll"] |> ignore // Ignore because may fail without admin rights - - - // if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" ( - if processorArchitecture = AMD64 then - // "%NGEN64%" install "%BINDIR%\fsiAnyCpu.exe" /queue:1 - // "%NGEN64%" install "%BINDIR%\FSharp.Build.dll" /queue:1 - // "%NGEN64%" executeQueuedItems 1 - ngen64 [binDir/"fsiAnyCpu.exe"; binDir/"FSharp.Build.dll"] |> ignore // Ignore because may fail without admin rights - // ) - //:donengen - - } diff --git a/tests/RunTests.cmd b/tests/RunTests.cmd deleted file mode 100644 index b61ef835088..00000000000 --- a/tests/RunTests.cmd +++ /dev/null @@ -1,289 +0,0 @@ -@if "%_echo%"=="" echo off -setlocal - -set FLAVOR=%1 -if /I "%FLAVOR%" == "debug" (goto :FLAVOR_OK) -if /I "%FLAVOR%" == "release" (goto :FLAVOR_OK) -goto :USAGE - -:FLAVOR_OK - -set NUNITPATH=%~dp0fsharpqa\testenv\bin\nunit\ -SET NUNIT3_CONSOLE=%~dp0..\packages\NUnit.Console.3.0.0\tools\nunit3-console.exe -SET FSI_TOOL=%~dp0..\%FLAVOR%\net40\bin\Fsi.exe - -set link_exe=%~dp0..\packages\VisualCppTools.14.0.24519-Pre\lib\native\bin\link.exe -if not exist "%link_exe%" ( - set saved_errorlevel=1 - echo Error: failed to find '%link_exe%' use nuget to restore the VisualCppTools package - goto :FINISHED -) - - -if /I not '%single_threaded%' == 'true' (set PARALLEL_ARG=-procs:%NUMBER_OF_PROCESSORS%) else set PARALLEL_ARG=-procs:0 - -rem This can be set to 1 to reduce the number of permutations used and avoid some of the extra-time-consuming tests -if "%SKIP_EXPENSIVE_TESTS%" == "1" ( - set EXCLUDE_ARG_NUNIT=--where "cat != Expensive" - set EXCLUDE_ARG_RUNALL=-nottags:Expensive -) - -rem Set this to 1 in order to use an external compiler host process -rem This only has an effect when running the FSHARPQA tests, but can -rem greatly speed up execution since fsc.exe does not need to be spawned thousands of times -set HOSTED_COMPILER=1 - -rem path to fsc.exe which will be used by tests -set FSCBINPATH=%~dp0..\%FLAVOR%\net40\bin -ECHO %FSCBINPATH% - -rem folder where test logs/results will be dropped -set RESULTSDIR=%~dp0TestResults -if not exist "%RESULTSDIR%" (mkdir "%RESULTSDIR%") - -if /I "%2" == "net40-fsharp-suite" (goto :NET40_FSHARP_SUITE) - -if /I "%2" == "coreclr-fsharp-suite" (goto :CORECLR_FSHARP_SUITE) - -if /I "%2" == "net40-fsharpqa-suite" (goto :NET40_FSHARPQA_SUITE) - -if /I "%2" == "net40-fsharpqa-suite-downtarget" (goto :NET40_FSHARPQA_SUITE) - -if /I "%2" == "net40-compilerunit-suite" ( - set compilerunitsuffix=net40 - goto :COMPILERUNIT_SUITE -) - -if /I "%2" == "portable-coreunit-suite" ( - goto :PORTABLE_COREUNIT_SUITE -) - -if /I "%2" == "net40-coreunit-suite" ( - goto :NET40_COREUNIT_SUITE -) -if /I "%2" == "coreclr-coreunit-suite" ( - goto :CORECLR_COREUNIT_SUITE -) -if /I "%2" == "vs-ideunit-suite" (goto :VS_IDEUNIT_SUITE) - -REM ---------------------------------------------------------------------------- - -:USAGE - -echo Usage: -echo. -echo RunTests.cmd ^ ^<...suite....^> [TagToRun^|"Tags,To,Run"] [TagNotToRun^|"Tags,Not,To,Run"] -echo. -exit /b 1 - -REM ---------------------------------------------------------------------------- - -:NET40_FSHARP_SUITE - -set XMLFILE=%RESULTSDIR%\net40-fsharp-suite-results.xml -set OUTPUTFILE=%RESULTSDIR%\net40-fsharp-suite-output.log -set ERRORFILE=%RESULTSDIR%\net40-fsharp-suite-errors.log - -echo "%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\net40\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2" -"%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\net40\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2" - -call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%" -goto :EOF - -REM ---------------------------------------------------------------------------- - -:CORECLR_FSHARP_SUITE - -set single_threaded=true -set permutations=FSC_CORECLR -set XMLFILE=%RESULTSDIR%\coreclr-fsharp-suite-results.xml -set OUTPUTFILE=%RESULTSDIR%\coreclr-fsharp-suite-output.log -set ERRORFILE=%RESULTSDIR%\coreclr-fsharp-suite-errors.log - -echo "%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\coreclr\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2" -"%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\coreclr\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2" - -call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%" -goto :EOF - -REM ---------------------------------------------------------------------------- - -:NET40_FSHARPQA_SUITE -set OSARCH=%PROCESSOR_ARCHITECTURE% - -set X86_PROGRAMFILES=%ProgramFiles% -if "%OSARCH%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)% - -set SYSWOW64=. -if "%OSARCH%"=="AMD64" set SYSWOW64=SysWoW64 - -set REGEXE32BIT=reg.exe -if not "%OSARCH%"=="x86" set REGEXE32BIT=%WINDIR%\syswow64\reg.exe - - FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B -if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B -if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B -if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B -if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B -set PATH=%PATH%;%WINSDKNETFXTOOLS% - -IF NOT DEFINED SNEXE32 IF EXIST "%WINSDKNETFXTOOLS%sn.exe" set SNEXE32=%WINSDKNETFXTOOLS%sn.exe -IF NOT DEFINED SNEXE64 IF EXIST "%WINSDKNETFXTOOLS%x64\sn.exe" set SNEXE64=%WINSDKNETFXTOOLS%x64\sn.exe -IF NOT DEFINED ildasm IF EXIST "%WINSDKNETFXTOOLS%ildasm.exe" set ildasm=%WINSDKNETFXTOOLS%ildasm.exe - -set FSC=%FSCBINPATH%\fsc.exe -set PATH=%FSCBINPATH%;%PATH% - -set FSCVPREVBINPATH=%X86_PROGRAMFILES%\Microsoft SDKs\F#\4.0\Framework\v4.0 -set FSCVPREV=%FSCVPREVBINPATH%\fsc.exe - -REM == VS-installed paths to FSharp.Core.dll -set FSCOREDLLPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.1.0 -set FSCOREDLL20PATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v2.0\2.3.0.0 -set FSCOREDLLPORTABLEPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETPortable\3.47.41.0 -set FSCOREDLLNETCOREPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.7.41.0 -set FSCOREDLLNETCORE78PATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.78.41.0 -set FSCOREDLLNETCORE259PATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.259.41.0 -set FSDATATPPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0\Type Providers -set FSCOREDLLVPREVPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0 - -REM == open source logic -if exist "%FSCBinPath%\FSharp.Core.dll" set FSCOREDLLPATH=%FSCBinPath% -if exist "%FSCBinPath%\..\..\net20\bin\FSharp.Core.dll" set FSCOREDLL20PATH=%FSCBinPath%\..\..\net20\bin -if exist "%FSCBinPath%\..\..\portable47\bin\FSharp.Core.dll" set FSCOREDLLPORTABLEPATH=%FSCBinPath%\..\..\portable47\bin -if exist "%FSCBinPath%\..\..\portable7\bin\FSharp.Core.dll" set FSCOREDLLNETCOREPATH=%FSCBinPath%\..\..\portable7\bin -IF exist "%FSCBinPath%\..\..\portable78\bin\FSharp.Core.dll" set FSCOREDLLNETCORE78PATH=%FSCBinPath%\..\..\portable78\bin -IF exist "%FSCBinPath%\..\..\portable259\bin\FSharp.Core.dll" set FSCOREDLLNETCORE259PATH=%FSCBinPath%\..\..\portable259\bin - -set FSCOREDLLPATH=%FSCOREDLLPATH%\FSharp.Core.dll -set FSCOREDLL20PATH=%FSCOREDLL20PATH%\FSharp.Core.dll -set FSCOREDLLPORTABLEPATH=%FSCOREDLLPORTABLEPATH%\FSharp.Core.dll -set FSCOREDLLNETCOREPATH=%FSCOREDLLNETCOREPATH%\FSharp.Core.dll -set FSCOREDLLNETCORE78PATH=%FSCOREDLLNETCORE78PATH%\FSharp.Core.dll -set FSCOREDLLNETCORE259PATH=%FSCOREDLLNETCORE259PATH%\FSharp.Core.dll -set FSCOREDLLVPREVPATH=%FSCOREDLLVPREVPATH%\FSharp.Core.dll - -for /d %%i in (%WINDIR%\Microsoft.NET\Framework\v4.0.?????) do set CORDIR=%%i -set PATH=%PATH%;%CORDIR% - -set RESULTFILE=net40-fsharpqa-suite-results.log -set FAILFILE=net40-fsharpqa-suite-errors.log -set FAILENV=net40-fsharpqa-suite-errors - -if /I "%2" == "net40-fsharpqa-suite-downtarget" ( - set ISCFLAGS=--noframework -r "%FSCOREDLLVPREVPATH%" -r "%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll" -r System.dll -r System.Runtime.dll -r System.Xml.dll -r System.Data.dll -r System.Web.dll -r System.Core.dll -r System.Numerics.dll - set EXCLUDE_ARG_RUNALL=%EXCLUDE_ARG_RUNALL%,NoCrossVer,FSI - set RESULTFILE=net40-fsharpqa-downtarget-suite-results.log - set FAILFILE=net40-fsharpqa-downtarget-suite-errors.log - set FAILENV=net40-fsharpqa-downtarget-suite-errors -) - -where.exe perl > NUL 2> NUL -if errorlevel 1 ( - echo Error: perl is not in the PATH - exit /b 1 -) - -pushd %~dp0fsharpqa\source -echo perl %~dp0fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results %RESULTFILE% -log %FAILFILE% -fail %FAILENV% -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG% - perl %~dp0fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results %RESULTFILE% -log %FAILFILE% -fail %FAILENV% -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG% - -popd -goto :EOF - -REM ---------------------------------------------------------------------------- - -:NET40_COREUNIT_SUITE - -set XMLFILE=%RESULTSDIR%\net40-coreunit-suite-results.xml -set OUTPUTFILE=%RESULTSDIR%\net40-coreunit-suite-output.log -set ERRORFILE=%RESULTSDIR%\net40-coreunit-suite-errors.log - -echo "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Core.Unittests.dll" - "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Core.Unittests.dll" - -call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%" -goto :EOF - -REM ---------------------------------------------------------------------------- - -:PORTABLE_COREUNIT_SUITE - -set XMLFILE=%RESULTSDIR%\portable-coreunit-suite-results.xml -set OUTPUTFILE=%RESULTSDIR%\portable-coreunit-suite-output.log -set ERRORFILE=%RESULTSDIR%\portable-coreunit-suite-errors.log - -echo "%NUNIT3_CONSOLE%" /framework:V4.0 /result="%XMLFILE%;format=nunit2" /output="%OUTPUTFILE%" /err="%ERRORFILE%" /work="%FSCBINPATH%" "%FSCBINPATH%\..\..\portable7\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable47\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable78\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable259\bin\FSharp.Core.Unittests.dll" - "%NUNIT3_CONSOLE%" /framework:V4.0 /result="%XMLFILE%;format=nunit2" /output="%OUTPUTFILE%" /err="%ERRORFILE%" /work="%FSCBINPATH%" "%FSCBINPATH%\..\..\portable7\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable47\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable78\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable259\bin\FSharp.Core.Unittests.dll" - -call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%" -goto :EOF - -REM ---------------------------------------------------------------------------- - -:CORECLR_COREUNIT_SUITE - -set XMLFILE=coreclr-coreunit-suite-results.xml -set OUTPUTFILE=coreclr-coreunit-suite-output.log -set ERRORFILE=coreclr-coreunit-suite-errors.log - -set testbinpath=%~dp0testbin\ -set architecturepath=coreclr\win7-x64 -set CORERUNPATH="%testbinpath%%flavor%\%architecturepath%" - -echo "%CORERUNPATH%\corerun.exe" "%testbinpath%%flavor%\coreclr\fsharp.core.unittests\FSharp.Core.Unittests.exe" - "%CORERUNPATH%\corerun.exe" "%testbinpath%%flavor%\coreclr\fsharp.core.unittests\FSharp.Core.Unittests.exe" - -call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%" -goto :EOF - -REM ---------------------------------------------------------------------------- - -:COMPILERUNIT_SUITE - -set XMLFILE=%RESULTSDIR%\%compilerunitsuffix%-compilerunit-suite-results.xml -set OUTPUTFILE=%RESULTSDIR%\%compilerunitsuffix%-compilerunit-suite-output.log -set ERRORFILE=%RESULTSDIR%\%compilerunitsuffix%-compilerunit-suite-errors.log - -echo "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\%compilerunitsuffix%\bin\FSharp.Compiler.Unittests.dll" - "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\%compilerunitsuffix%\bin\FSharp.Compiler.Unittests.dll" - -call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%" -goto :EOF - -REM ---------------------------------------------------------------------------- - -:VS_IDEUNIT_SUITE - -set XMLFILE=%RESULTSDIR%\vs-ideunit-suite-results.xml -set OUTPUTFILE=%RESULTSDIR%\vs-ideunit-suite-output.log -set ERRORFILE=%RESULTSDIR%\vs-ideunit-suite-errors.log - -pushd %FSCBINPATH% -echo "%NUNIT3_CONSOLE%" --verbose --x86 --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" --workers=1 --agents=1 --full "%FSCBINPATH%\VisualFSharp.Unittests.dll" - "%NUNIT3_CONSOLE%" --verbose --x86 --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" --workers=1 --agents=1 --full "%FSCBINPATH%\VisualFSharp.Unittests.dll" -popd -call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%" -goto :EOF - -REM ---------------------------------------------------------------------------- - -:UPLOAD_TEST_RESULTS - -set saved_errorlevel=%errorlevel% -echo Saved errorlevel %saved_errorlevel% - -rem See -if not defined APPVEYOR goto :SKIP_APPVEYOR_UPLOAD - -echo powershell -File Upload-Results.ps1 "%~1" - powershell -File Upload-Results.ps1 "%~1" - -:SKIP_APPVEYOR_UPLOAD -:FINISHED - -if NOT %saved_errorlevel% == 0 exit /b 1 -goto :EOF - -:: Note: "goto :EOF" returns from an in-batchfile "call" command -:: in preference to returning from the entire batch file. diff --git a/tests/config.fs b/tests/config.fs index 843f7277e47..e066a566ebb 100644 --- a/tests/config.fs +++ b/tests/config.fs @@ -23,24 +23,18 @@ type private FSLibPaths = FSDATATPPATH : string FSCOREDLLVPREVPATH : string } -// REM === -// REM === Find paths to shipped F# libraries referenced by clients -// REM === +// === Find paths to shipped F# libraries referenced by clients let private GetFSLibPaths env osArch fscBinPath = - // REM == Find out OS architecture, no matter what cmd prompt - // SET OSARCH=%PROCESSOR_ARCHITECTURE% - // IF NOT "%PROCESSOR_ARCHITEW6432%"=="" SET OSARCH=%PROCESSOR_ARCHITEW6432% - ignore (osArch, "param") - // REM == Find out path to native 'Program Files 32bit', no matter what - // REM == architecture we are running on and no matter what command - // REM == prompt we came from. + // == Find out path to native 'Program Files 32bit', no matter what + // == architecture we are running on and no matter what command + // == prompt we came from. // IF /I "%OSARCH%"=="x86" set X86_PROGRAMFILES=%ProgramFiles% // IF /I "%OSARCH%"=="IA64" set X86_PROGRAMFILES=%ProgramFiles(x86)% // IF /I "%OSARCH%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)% let X86_PROGRAMFILES = WindowsPlatform.x86ProgramFilesDirectory env osArch - // REM == Default VS install locations + // == Default VS install locations // set FSCOREDLLPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.1.0 let mutable FSCOREDLLPATH = X86_PROGRAMFILES/"Reference Assemblies"/"Microsoft"/"FSharp"/".NETFramework"/"v4.0"/"4.4.1.0" // set FSCOREDLL20PATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v2.0\2.3.0.0 @@ -58,7 +52,7 @@ let private GetFSLibPaths env osArch fscBinPath = // set FSCOREDLLVPREVPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0 let mutable FSCOREDLLVPREVPATH = X86_PROGRAMFILES/"Reference Assemblies"/"Microsoft"/"FSharp"/".NETFramework"/"v4.0"/"4.4.0.0" - // REM == Check if using open build instead + // == Check if using open build instead // IF EXIST "%FSCBinPath%\FSharp.Core.dll" set FSCOREDLLPATH=%FSCBinPath% match fscBinPath with @@ -115,13 +109,13 @@ let private GetFSLibPaths env osArch fscBinPath = FSDATATPPATH = FSDATATPPATH; FSCOREDLLVPREVPATH = FSCOREDLLVPREVPATH } -// REM === -// REM === Find path to FSC/FSI looking up the registry -// REM === Will set the FSCBinPath env variable. -// REM === This if for Dev11+/NDP4.5 -// REM === Works on both XP and Vista and hopefully everything else -// REM === Works on 32bit and 64 bit, no matter what cmd prompt it is invoked from -// REM === +// === +// === Find path to FSC/FSI looking up the registry +// === Will set the FSCBinPath env variable. +// === This if for Dev11+/NDP4.5 +// === Works on both XP and Vista and hopefully everything else +// === Works on 32bit and 64 bit, no matter what cmd prompt it is invoked from +// === let private SetFSCBinPath45 () = // FOR /F "tokens=1-2*" %%a IN ('reg query "%REG_SOFTWARE%\Microsoft\FSharp\4.1\Runtime\v4.0" /ve') DO set FSCBinPath=%%c // FOR /F "tokens=1-3*" %%a IN ('reg query "%REG_SOFTWARE%\Microsoft\FSharp\4.1\Runtime\v4.0" /ve') DO set FSCBinPath=%%d @@ -131,8 +125,7 @@ let private SetFSCBinPath45 () = | Some (:? string as d) when directoryExists d -> Some d | Some _ | None -> None -let private attendedLog envVars x86_ProgramFiles corDir corDir40 = - let getMsbuildPath = +let private getMsbuildPath envVars x86_ProgramFiles corDir corDir40 = // rem first see if we have got msbuild installed let mutable MSBuildToolsPath = envVars |> Map.tryFind "MSBuildToolsPath" let VS150COMNTOOLS = match envVars |> Map.tryFind "VS150COMNTOOLS" with | Some x -> x | None -> "" @@ -166,35 +159,20 @@ let private attendedLog envVars x86_ProgramFiles corDir corDir40 = MSBuildToolsPath // :done_MsBuildToolsPath - // exit /b 0 - getMsbuildPath, (WindowsPlatform.visualStudioVersion ()) let config envVars = - // set _SCRIPT_DRIVE=%~d0 - ignore "unused" - // set _SCRIPT_PATH=%~p0 - ignore "unused" // set SCRIPT_ROOT=%_SCRIPT_DRIVE%%_SCRIPT_PATH% let SCRIPT_ROOT = __SOURCE_DIRECTORY__ |> Path.GetFullPath let env key = envVars |> Map.tryFind key - let envOrDefault key def = env key |> Option.fold (fun s t -> t) def + let envOrDefault key def = defaultArg (env key) def let envOrFail key = env key |> function Some x -> x | None -> failwithf "environment variable '%s' required " key let where = Commands.where envVars let PROCESSOR_ARCHITECTURE = WindowsPlatform.processorArchitecture envVars - // set REG_SOFTWARE=HKLM\SOFTWARE - // IF /I "%PROCESSOR_ARCHITECTURE%"=="AMD64" (set REG_SOFTWARE=%REG_SOFTWARE%\Wow6432Node) - ignore "unused, using .net bcl to query RegistryView.Registry32" - - // if not defined FSHARP_HOME set FSHARP_HOME=%SCRIPT_ROOT%..\.. - // for /f %%i in ("%FSHARP_HOME%") do set FSHARP_HOME=%%~fi - let FSHARP_HOME = - envOrDefault "FSHARP_HOME" (SCRIPT_ROOT/".."/"..") - |> Path.GetFullPath - // REM Do we know where fsc.exe is? + // Do we know where fsc.exe is? // IF DEFINED FSCBinPath goto :FSCBinPathFound // FOR /F "delims=" %%i IN ('where fsc.exe') DO SET FSCBinPath=%%~dpi // :FSCBinPathFound @@ -203,25 +181,17 @@ let config envVars = | Some p -> Some p | None -> where "fsc.exe" |> Option.map Path.GetDirectoryName - // SET CLIFLAVOUR=cli\4.5 - let CLIFLAVOUR = @"cli\4.5" - // if not exist "%FSCBinPath%\fsc.exe" call :SetFSCBinPath45 if not (FSCBinPath |> Option.map (fun dir -> dir/"fsc.exe") |> Option.exists fileExists) then FSCBinPath <- SetFSCBinPath45 () - // if not exist "%FSCBinPath%\fsc.exe" echo %FSCBinPath%\fsc.exe still not found. Assume that user has added it to path somewhere - ignore "smoke test check fsc.exe" - - // REM add %FSCBinPath% to path only if not already there. Otherwise, the path keeps growing. + // add %FSCBinPath% to path only if not already there. Otherwise, the path keeps growing. // echo %path%; | find /i "%FSCBinPath%;" > NUL // if ERRORLEVEL 1 set PATH=%PATH%;%FSCBinPath% //REVIEW add it? or better use only env var? // if "%FSDIFF%"=="" set FSDIFF=%SCRIPT_ROOT%fsharpqa\testenv\bin\diff.exe let FSDIFF = envOrDefault "FSDIFF" (SCRIPT_ROOT/"fsharpqa"/"testenv"/"bin"/"diff.exe") - // if not exist "%FSDIFF%" echo FSDIFF not found at expected path of %fsdiff% && exit /b 1 - ignore "check exists diff.exe" // rem check if we're already configured, if not use the configuration from the last line of the config file // if "%fsc%"=="" ( @@ -236,31 +206,20 @@ let config envVars = // if not defined ALINK set ALINK=al.exe let mutable ALINK = (envOrDefault "ALINK" "al.exe") - // if not defined CSC set CSC=csc.exe %csc_flags% - let CSC = envOrDefault "CSC" "csc.exe" + let BUILD_CONFIG = envOrDefault "BUILD_CONFIG" "release" - // REM SDK Dependencires. + // SDK Dependencires. // if not defined ILDASM set ILDASM=ildasm.exe let mutable ILDASM = envOrDefault "ILDASM" "ildasm.exe" - // if not defined GACUTIL set GACUTIL=gacutil.exe - let mutable GACUTIL = envOrDefault "GACUTIL" "gacutil.exe" + let mutable SN = envOrDefault "SN" "sn.exe" // if not defined PEVERIFY set PEVERIFY=peverify.exe let mutable PEVERIFY = envOrDefault "PEVERIFY" "peverify.exe" // if not defined RESGEN set RESGEN=resgen.exe let mutable RESGEN = envOrDefault "RESGEN" "resgen.exe" // if "%fsiroot%" == "" ( set fsiroot=fsi) - if fsiroot |> Option.isNone - then fsiroot <- Some "fsi" - - // REM == Test strategy: if we are on a 32bit OS => use fsi.exe - // REM == if we are on a 64bit OS => use fsiAnyCPU.exe - // REM == This way we get coverage of both binaries without having to - // REM == double the test matrix. Note that our nightly automation - // REM == always cover x86 and x64... so we won't miss much. There - // REM == is an implicit assumption that the CLR will do it's job - // REM == to make an FSIAnyCPU.exe behave as FSI.exe on a 32bit OS. - // REM == On 64 bit machines ensure that we run the 64 bit versions of tests too. + if fsiroot |> Option.isNone then + fsiroot <- Some "fsi" // SET OSARCH=%PROCESSOR_ARCHITECTURE% // IF NOT "%PROCESSOR_ARCHITEW6432%"=="" SET OSARCH=%PROCESSOR_ARCHITEW6432% @@ -273,44 +232,15 @@ let config envVars = let mutable FSC_BASIC_64 = env "FSC_BASIC_64" match fsiroot, OSARCH with | Some "fsi", X86 -> () - | Some "fsi", arc -> + | Some "fsi", _ -> fsiroot <- Some "fsiAnyCPU" FSC_BASIC_64 <- Some "FSC_BASIC_64" | _ -> () - // REM --------------------------------------------------------------- - // REM If we set a "--cli-version" flag anywhere in the flags then assume its v1.x - // REM and generate a config file, so we end up running the test on the right version - // REM of the CLR. Also modify the CORSDK used. - // REM - // REM Use CLR 1.1 at a minimum since 1.0 is not installed on most of my machines - // REM otherwise assume v2.0 - // REM TODO: we need to update this to be v2.0 or v3.5 and nothing else. - // set fsc_flags=%fsc_flags% let mutable fsc_flags = env "fsc_flags" - // set CLR_SUPPORTS_GENERICS=true - let CLR_SUPPORTS_GENERICS = true - // set ILDASM=%ILDASM% - ignore "env var not needed, ildasm is invoked with Commands.ildasm" - // set GACUTIL=%GACUTIL% - ignore "env var not needed, gacutil is invoked with Commads.gacutil" - // set CLR_SUPPORTS_WINFORMS=true - let CLR_SUPPORTS_WINFORMS = true - // set CLR_SUPPORTS_SYSTEM_WEB=true - let CLR_SUPPORTS_SYSTEM_WEB = true - - // REM == - // REM == F# v1.0 targets NetFx3.5 (i.e. NDP2.0) - // REM == It is ok to hardcode the location, since this is not going to - // REM == change ever. Well, if/when we target a different runtime we'll have - // REM == to come and update this, but for now we MUST make sure we use the 2.0 stuff. - // REM == - // REM == If we run on a 64bit machine (from a 64bit command prompt!), we use the 64bit - // REM == CLR, but tweaking 'Framework' to 'Framework64'. - // REM == // set CORDIR=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\ let SystemRoot = envOrFail "SystemRoot" let mutable CORDIR = SystemRoot/"Microsoft.NET"/"Framework"/"v2.0.50727" |> Commands.pathAddBackslash @@ -326,8 +256,8 @@ let config envVars = | None -> () | Some d -> CORDIR <- d - // REM == Use the same runtime as our architecture - // REM == ASSUMPTION: This could be a good or bad thing. + // == Use the same runtime as our architecture + // == ASSUMPTION: This could be a good or bad thing. // IF /I NOT "%PROCESSOR_ARCHITECTURE%"=="x86" set CORDIR=%CORDIR:Framework=Framework64% match PROCESSOR_ARCHITECTURE with | X86 -> () @@ -354,7 +284,7 @@ let config envVars = let mutable CORSDK = allSDK |> Seq.tryPick id - // REM == Fix up CORSDK for 64bit platforms... + // == Fix up CORSDK for 64bit platforms... // IF /I "%PROCESSOR_ARCHITECTURE%"=="AMD64" SET CORSDK=%CORSDK%\x64 // IF /I "%PROCESSOR_ARCHITECTURE%"=="IA64" SET CORSDK=%CORSDK%\IA64 match PROCESSOR_ARCHITECTURE with @@ -362,39 +292,29 @@ let config envVars = | IA64 -> CORSDK <- CORSDK |> Option.map (fun dir -> dir/"IA64") | _ -> () - // REM add powerpack to flags only if not already there. Otherwise, the variable can keep growing. + // add powerpack to flags only if not already there. Otherwise, the variable can keep growing. // echo %fsc_flags% | find /i "powerpack" // if ERRORLEVEL 1 set fsc_flags=%fsc_flags% -r:System.Core.dll --nowarn:20 if fsc_flags |> Option.exists (fun flags -> flags.ToLower().Contains("powerpack")) then () - else fsc_flags <- Some (sprintf "%s -r:System.Core.dll --nowarn:20" (fsc_flags |> Option.fold (fun s t -> t) "")) + else fsc_flags <- Some (sprintf "%s -r:System.Core.dll --nowarn:20" (defaultArg fsc_flags "")) // if not defined fsi_flags set fsi_flags=%fsc_flags:--define:COMPILED=% --define:INTERACTIVE --maxerrors:1 --abortonerror let mutable fsi_flags = env "fsi_flags" if fsi_flags |> Option.isNone then ( - let fsc_flags_no_compiled = fsc_flags |> Option.fold (fun s flags -> flags.Replace("--define:COMPILED", "")) "" + let fsc_flags_no_compiled = fsc_flags |> Option.fold (fun _ flags -> flags.Replace("--define:COMPILED", "")) "" fsi_flags <- Some (sprintf "%s --define:INTERACTIVE --maxerrors:1 --abortonerror" fsc_flags_no_compiled) ) // echo %fsc_flags%; | find "--define:COMPILED" > NUL || ( // set fsc_flags=%fsc_flags% --define:COMPILED // ) - if not (fsc_flags |> Option.exists (fun flags -> flags.Contains("--define:COMPILED"))) - then fsc_flags <- Some (sprintf "%s --define:COMPILED" (fsc_flags |> Option.fold (fun s t -> t) "")) - - // if NOT "%fsc_flags:generate-config-file=X%"=="%fsc_flags%" ( - // if NOT "%fsc_flags:clr-root=X%"=="%fsc_flags%" ( - // set fsc_flags=%fsc_flags% --clr-root:%CORDIR% - // ) - // ) - // --clr-root non e' un flag valido di fsc - // if not <| (fsc_flags |> Option.exists (fun flags -> flags.Contains("generate-config-file"))) then - // if not <| (fsc_flags |> Option.exists (fun flags -> flags.Contains("clr-root"))) then - // fsc_flags <- Some (sprintf "%s --clr-root:%s" (fsc_flags |> Option.fold (fun s t -> t) "") (!CORDIR)) + if not (fsc_flags |> Option.exists (fun flags -> flags.Contains("--define:COMPILED"))) then + fsc_flags <- Some (sprintf "%s --define:COMPILED" (defaultArg fsc_flags "")) // if "%CORDIR%"=="unknown" set CORDIR= if CORDIR = "unknown" then CORDIR <- "" - // REM use short names in the path so you don't have to deal with the space in things like "Program Files" + // use short names in the path so you don't have to deal with the space in things like "Program Files" // for /f "delims=" %%I in ("%CORSDK%") do set CORSDK=%%~dfsI% CORSDK <- CORSDK |> Option.map Commands.convertToShortPath @@ -405,23 +325,12 @@ let config envVars = // set NGEN= let mutable NGEN = None - // REM == - // REM == Set path to C# compiler. If we are NOT on NetFx4.0, try we prefer C# 3.5 to C# 2.0 - // REM == This is because we have tests that reference System.Core.dll from C# code! - // REM == (e.g. fsharp\core\fsfromcs) - // REM == // IF NOT "%CORDIR%"=="" IF EXIST "%CORDIR%\csc.exe" SET CSC="%CORDIR%\csc.exe" %csc_flags% let mutable CSC = None if not (CORDIR = "") then if CORDIR/"csc.exe" |> fileExists then CSC <- Some (CORDIR/"csc.exe") - // IF "%CORDIR40%"=="" IF NOT "%CORDIR%"=="" IF EXIST "%CORDIR%\..\V3.5\csc.exe" SET CSC="%CORDIR%\..\v3.5\csc.exe" %csc_flags% - if CORDIR40 |> Option.isNone then - if not (CORDIR = "") then - if CORDIR/".."/"V3.5"/"csc.exe" |> fileExists - then CSC <- Some (CORDIR/".."/"V3.5"/"csc.exe") - // IF NOT "%CORDIR%"=="" IF EXIST "%CORDIR%\ngen.exe" SET NGEN=%CORDIR%\ngen.exe if not (CORDIR = "") then if CORDIR/"ngen.exe" |> fileExists @@ -432,21 +341,15 @@ let config envVars = if CORDIR/"al.exe" |> fileExists then ALINK <- CORDIR/"al.exe" - // REM == - // REM == The logic here is: pick the latest msbuild - // REM == If we are testing against NDP4.0, then don't try msbuild 3.5 - // REM == - // IF NOT "%CORSDK%"=="" IF EXIST "%CORSDK%\ildasm.exe" SET ILDASM=%CORSDK%\ildasm.exe match CORSDK |> Option.map (fun d -> d/"ildasm.exe") with | Some p when fileExists p -> ILDASM <- p | Some _ | None -> () - // IF NOT "%CORSDK%"=="" IF EXIST "%CORSDK%\gacutil.exe" SET GACUTIL=%CORSDK%\gacutil.exe - match CORSDK |> Option.map (fun d -> d/"gacutil.exe") with - | Some p when fileExists p -> GACUTIL <- p + match CORSDK |> Option.map (fun d -> d/"sn.exe") with + | Some p when fileExists p -> SN <- p | Some _ | None -> () - + // IF NOT "%CORSDK%"=="" IF EXIST "%CORSDK%\peverify.exe" SET PEVERIFY=%CORSDK%\peverify.exe match CORSDK |> Option.map (fun d -> d/"peverify.exe") with | Some p when fileExists p -> PEVERIFY <- p @@ -456,10 +359,8 @@ let config envVars = // IF NOT "%CORSDK%"=="" IF NOT EXIST "%RESGEN%" IF EXIST "%CORSDK%\..\resgen.exe" SET RESGEN=%CORSDK%\..\resgen.exe match CORSDK with | Some sdk -> - if sdk/"resgen.exe" |> fileExists - then RESGEN <- sdk/"resgen.exe" - elif sdk/".."/"resgen.exe" |> fileExists - then RESGEN <- sdk/".."/"resgen.exe" + if sdk/"resgen.exe" |> fileExists then RESGEN <- sdk/"resgen.exe" + elif sdk/".."/"resgen.exe" |> fileExists then RESGEN <- sdk/".."/"resgen.exe" | None -> () // IF NOT "%CORSDK%"=="" IF EXIST "%CORSDK%\al.exe" SET ALINK=%CORSDK%\al.exe @@ -482,67 +383,44 @@ let config envVars = | Some dir, Some fsiExe when fileExists (dir/(fsiExe+".exe")) -> FSI <- dir/(fsiExe+".exe") | _ -> () - // REM == Located F# library DLLs in either open or Visual Studio contexts + // == Located F# library DLLs in either open or Visual Studio contexts // call :GetFSLibPaths let X86_PROGRAMFILES, libs = GetFSLibPaths envVars OSARCH FSCBinPath - // REM == Set standard flags for invoking powershell scripts - // IF NOT DEFINED PSH_FLAGS SET PSH_FLAGS=-nologo -noprofile -executionpolicy bypass - let PSH_FLAGS = envOrDefault "PSH_FLAGS" "-nologo -noprofile -executionpolicy bypass" - ignore "unused, cross platform requirement and powershell is not used in tests" - - //add to environment variables, only if needed (an example is ILDASM, cfg.ILDASM should be used instead inside tests) - let environment = - envVars - |> Map.add "CLR_SUPPORTS_GENERICS" (sprintf "%A" CLR_SUPPORTS_GENERICS) - |> Map.add "CLR_SUPPORTS_WINFORMS" (sprintf "%A" CLR_SUPPORTS_WINFORMS) - |> Map.add "CLR_SUPPORTS_SYSTEM_WEB" (sprintf "%A" CLR_SUPPORTS_SYSTEM_WEB) - let orBlank = Option.fold (fun _ x -> x) "" - - let cfg = { - EnvironmentVariables = environment; - ALINK = ALINK; - CORDIR = CORDIR |> Commands.pathAddBackslash; - CORSDK = CORSDK |> orBlank |> Commands.pathAddBackslash; - FSCBinPath = FSCBinPath |> orBlank |> Commands.pathAddBackslash; - FSCOREDLL20PATH = libs.FSCOREDLL20PATH; - FSCOREDLLPATH = libs.FSCOREDLLPATH; - FSCOREDLLPORTABLEPATH = libs.FSCOREDLLPORTABLEPATH; - FSCOREDLLNETCOREPATH = libs.FSCOREDLLNETCOREPATH; - FSCOREDLLNETCORE78PATH = libs.FSCOREDLLNETCORE78PATH; - FSCOREDLLNETCORE259PATH = libs.FSCOREDLLNETCORE259PATH; - FSDATATPPATH = libs.FSDATATPPATH; - FSCOREDLLVPREVPATH = libs.FSCOREDLLVPREVPATH; - FSDIFF = FSDIFF; - GACUTIL = GACUTIL; - ILDASM = ILDASM; - INSTALL_SKU = None; - MSBUILDTOOLSPATH = None; - MSBUILD = None; - NGEN = NGEN |> orBlank; - PEVERIFY = PEVERIFY; - RESGEN = RESGEN; - CSC = CSC |> orBlank; - FSC = FSC; - FSI = FSI; - csc_flags = csc_flags; - fsc_flags = fsc_flags |> orBlank; - fsi_flags = fsi_flags |> orBlank; - } - - // if DEFINED _UNATTENDEDLOG exit /b 0 - match env "_UNATTENDEDLOG" with - | Some _ -> cfg - | None -> - let msbuildToolsPath, installSku = attendedLog envVars X86_PROGRAMFILES CORDIR CORDIR40 - { cfg with - MSBUILDTOOLSPATH = msbuildToolsPath |> Option.map (Commands.pathAddBackslash); - MSBUILD = msbuildToolsPath |> Option.map (fun d -> d/"msbuild.exe"); - INSTALL_SKU = installSku } + let msbuildToolsPath = getMsbuildPath envVars X86_PROGRAMFILES CORDIR CORDIR40 + + { + EnvironmentVariables = envVars + ALINK = ALINK + CORDIR = CORDIR |> Commands.pathAddBackslash + CORSDK = CORSDK |> orBlank |> Commands.pathAddBackslash + FSCBinPath = FSCBinPath |> orBlank |> Commands.pathAddBackslash + FSCOREDLL20PATH = libs.FSCOREDLL20PATH + FSCOREDLLPATH = libs.FSCOREDLLPATH + FSCOREDLLPORTABLEPATH = libs.FSCOREDLLPORTABLEPATH + FSCOREDLLNETCOREPATH = libs.FSCOREDLLNETCOREPATH + FSCOREDLLNETCORE78PATH = libs.FSCOREDLLNETCORE78PATH + FSCOREDLLNETCORE259PATH = libs.FSCOREDLLNETCORE259PATH + FSDATATPPATH = libs.FSDATATPPATH + FSCOREDLLVPREVPATH = libs.FSCOREDLLVPREVPATH + FSDIFF = FSDIFF + ILDASM = ILDASM + SN = SN + NGEN = NGEN |> orBlank + PEVERIFY = PEVERIFY + RESGEN = RESGEN + CSC = CSC |> orBlank + BUILD_CONFIG = BUILD_CONFIG + FSC = FSC + FSI = FSI + csc_flags = csc_flags + fsc_flags = fsc_flags |> orBlank + fsi_flags = fsi_flags |> orBlank + Directory="" + MSBUILDTOOLSPATH = msbuildToolsPath |> Option.map (Commands.pathAddBackslash) + MSBUILD = msbuildToolsPath |> Option.map (fun d -> d/"msbuild.exe") } - - let logConfig (cfg: TestConfig) = log "---------------------------------------------------------------" log "Executables" @@ -551,6 +429,7 @@ let logConfig (cfg: TestConfig) = log "CORDIR =%s" cfg.CORDIR log "CORSDK =%s" cfg.CORSDK log "CSC =%s" cfg.CSC + log "BUILD_CONFIG =%s" cfg.BUILD_CONFIG log "csc_flags =%s" cfg.csc_flags log "FSC =%s" cfg.FSC log "fsc_flags =%s" cfg.fsc_flags @@ -566,9 +445,7 @@ let logConfig (cfg: TestConfig) = log "FSDIFF =%s" cfg.FSDIFF log "FSI =%s" cfg.FSI log "fsi_flags =%s" cfg.fsi_flags - log "GACUTIL =%s" cfg.GACUTIL log "ILDASM =%s" cfg.ILDASM - log "INSTALL_SKU =%A" cfg.INSTALL_SKU log "MSBUILDTOOLSPATH =%A" cfg.MSBUILDTOOLSPATH log "MSBUILD =%A" cfg.MSBUILD log "NGEN =%s" cfg.NGEN diff --git a/tests/fsharp/Commands.fs b/tests/fsharp/Commands.fs index dd3e03e2b16..cc6642e441d 100644 --- a/tests/fsharp/Commands.fs +++ b/tests/fsharp/Commands.fs @@ -65,26 +65,7 @@ let type_append_tofile workDir source p = let contents = File.ReadAllText(from) File.AppendAllText(to', contents) -// %GACUTIL% /if %BINDIR%\FSharp.Core.dll -let gacutil exec exeName flags assembly = - exec exeName (sprintf """%s "%s" """ flags assembly) - -// "%NGEN32%" install "%BINDIR%\fsc.exe" /queue:1 -// "%NGEN32%" install "%BINDIR%\fsi.exe" /queue:1 -// "%NGEN32%" install "%BINDIR%\FSharp.Build.dll" /queue:1 -// "%NGEN32%" executeQueuedItems 1 -let ngen exec (ngenExe: FilePath) assemblies = - let queue = assemblies |> List.map (fun a -> (sprintf "install \"%s\" /queue:1" a)) - - List.concat [ queue; ["executeQueuedItems 1"] ] - |> Seq.ofList - |> Seq.map (fun args -> exec ngenExe args) - |> Seq.skipWhile (function ErrorLevel _ -> false | CmdResult.Success -> true) - |> Seq.tryHead - |> function None -> CmdResult.Success | Some res -> res - let fsc exec (fscExe: FilePath) flags srcFiles = - // "%FSC%" %fsc_flags% --define:COMPILING_WITH_EMPTY_SIGNATURE -o:tmptest2.exe tmptest2.mli tmptest2.ml exec fscExe (sprintf "%s %s" flags (srcFiles |> Seq.ofList |> String.concat " ")) let csc exec cscExe flags srcFiles = @@ -93,11 +74,9 @@ let csc exec cscExe flags srcFiles = let fsi exec fsiExe flags sources = exec fsiExe (sprintf "%s %s" flags (sources |> Seq.ofList |> String.concat " ")) -// "%MSBUILDTOOLSPATH%\msbuild.exe" PCL.fsproj let msbuild exec msbuildExe flags srcFiles = exec msbuildExe (sprintf "%s %s" flags (srcFiles |> Seq.ofList |> String.concat " ")) -// "%RESGEN%" /compile Resources.resx let resgen exec resgenExe flags sources = exec resgenExe (sprintf "%s %s" flags (sources |> Seq.ofList |> String.concat " ")) diff --git a/tests/fsharp/FSharp.Tests.fsproj b/tests/fsharp/FSharp.Tests.fsproj index 9fb41bcc3cf..c20d501b852 100644 --- a/tests/fsharp/FSharp.Tests.fsproj +++ b/tests/fsharp/FSharp.Tests.fsproj @@ -17,6 +17,7 @@ false false + $(OtherFlags) --warnon:1182 $(DefineConstants);EXTENSIONTYPING @@ -38,20 +39,10 @@ prompt 3 + + 3 + - - - {DED3BBD7-53F4-428A-8C9F-27968E768605} - FSharp.Core - - - - ..\..\packages\NUnit.3.0.0\lib\net45\nunit.framework.dll - True - - - - @@ -62,41 +53,33 @@ config.fs - - update.fs + + NunitHelpers.fs - - - - - - - + - - - - - + - - - - - - - - - - - - + - + + + {DED3BBD7-53F4-428A-8C9F-27968E768605} + FSharp.Core + + + + ..\..\packages\NUnit.3.0.0\lib\net45\nunit.framework.dll + True + + + + + \ No newline at end of file diff --git a/tests/fsharp/FSharpTestSuiteAsserts.fs b/tests/fsharp/FSharpTestSuiteAsserts.fs deleted file mode 100644 index f862421f6cd..00000000000 --- a/tests/fsharp/FSharpTestSuiteAsserts.fs +++ /dev/null @@ -1,22 +0,0 @@ -module FSharpTestSuiteAsserts - -open PlatformHelpers -open FSharpTestSuiteTypes - -let requireVSUltimate cfg = attempt { - do! match cfg.INSTALL_SKU with - | Some (Ultimate) -> Success - | x -> - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - NUnitConf.skip (sprintf "Test not supported except on Ultimate, was %A" x) - // exit /b 0 - // ) - } - -let requireENCulture () = attempt { - do! match System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName with - | "en" -> Success - | c -> - NUnitConf.skip (sprintf "Test not supported except en Culture, was %s" c) - } diff --git a/tests/fsharp/FSharpTestSuiteTypes.fs b/tests/fsharp/FSharpTestSuiteTypes.fs index 6e401a5679a..65911731297 100644 --- a/tests/fsharp/FSharpTestSuiteTypes.fs +++ b/tests/fsharp/FSharpTestSuiteTypes.fs @@ -12,6 +12,7 @@ type Permutation = | FSI_STDIN | FSI_STDIN_OPT | FSI_STDIN_GUI + | FSC_CORECLR | FSC_BASIC | FSC_BASIC_64 | GENERATED_SIGNATURE @@ -28,6 +29,7 @@ type TestConfig = CORSDK : string CSC : string csc_flags : string + BUILD_CONFIG : string FSC : string fsc_flags : string FSCBinPath : string @@ -42,21 +44,11 @@ type TestConfig = FSDIFF : string FSI : string fsi_flags : string - GACUTIL : string ILDASM : string - INSTALL_SKU : INSTALL_SKU option + SN : string MSBUILDTOOLSPATH : string option NGEN : string PEVERIFY : string RESGEN : string - MSBUILD : string option } - -and INSTALL_SKU = - | Clean - | DesktopExpress - | WebExpress - | Ultimate - -type TestRunContext = - { Directory: string; - Config: TestConfig } + MSBUILD : string option + Directory: string } diff --git a/tests/fsharp/PlatformHelpers.fs b/tests/fsharp/PlatformHelpers.fs index c8894ea5132..a0083945086 100644 --- a/tests/fsharp/PlatformHelpers.fs +++ b/tests/fsharp/PlatformHelpers.fs @@ -1,5 +1,8 @@ module PlatformHelpers +open System.IO +open System.Diagnostics + type ProcessorArchitecture = | X86 | IA64 @@ -12,8 +15,6 @@ type ProcessorArchitecture = | AMD64 -> "AMD64" | Unknown arc -> arc -open System.IO - type FilePath = string type CmdResult = @@ -27,8 +28,6 @@ type CmdArguments = module Process = - open System.Diagnostics - let processExePath baseDir exe = if Path.IsPathRooted(exe) then exe else @@ -95,8 +94,6 @@ type Result<'S,'F> = type Attempt<'S,'F> = (unit -> Result<'S,'F>) -open System.Diagnostics - [] let internal succeed x = (fun () -> Success x) @@ -170,7 +167,6 @@ let attempt = new AttemptBuilder() let log format = Printf.ksprintf (printfn "%s") format - type OutPipe (writer: TextWriter) = member x.Post (msg:string) = lock writer (fun () -> writer.WriteLine(msg)) interface System.IDisposable with @@ -181,7 +177,7 @@ let redirectTo (writer: TextWriter) = new OutPipe (writer) let redirectToLog () = redirectTo System.Console.Out let inline (++) a (b: string) = System.IO.Path.Combine(a,b) -let inline (/) a b = a ++ b //TODO deprecated +let inline (/) a b = a ++ b let splitAtFirst (c: char -> bool) (s: string) = let rec helper x (rest: string) = diff --git a/tests/fsharp/core/control/test.fsx b/tests/fsharp/core/control/test.fsx index 25da1fff98a..01c17acce57 100644 --- a/tests/fsharp/core/control/test.fsx +++ b/tests/fsharp/core/control/test.fsx @@ -374,6 +374,7 @@ check "32o8f43kaI: Spawn" result) 1 +#if !Portable module FromBeginEndTests = // FromBeginEnd let FromBeginEndTest() = @@ -452,7 +453,7 @@ module FromBeginEndTests = expectedResult FromBeginEndTest() - +#endif module Bug6078 = open System @@ -475,6 +476,7 @@ module Bug6078 = "foo" Test() +#if !Portable module AwaitEventTests = let AwaitEventTest() = // AwaitEvent @@ -525,7 +527,7 @@ module AwaitEventTests = AwaitEventTest() - +#endif module AsBeginEndTests = diff --git a/tests/fsharp/core/netcore/ConsoleApplication1/Program.cs b/tests/fsharp/core/netcore/ConsoleApplication1/Program.cs index 1cb412a0330..da26a0ff66b 100644 --- a/tests/fsharp/core/netcore/ConsoleApplication1/Program.cs +++ b/tests/fsharp/core/netcore/ConsoleApplication1/Program.cs @@ -18,13 +18,15 @@ static int Main(string[] args) { SetHooks(); - Run("Core_access", () => { var x = Core_access.aa; }); - Run("Core_apporder", () => { var x = Core_apporder.aa; }); - Run("Core_array", () => { var x = Core_array.aa; }); - Run("Core_attributes", () => { var x = Core_attributes.aa; }); - Run("Core_comprehensions", () => { var x = Core_comprehensions.aa; }); + /* Run("Core_access", () => { var x = Core_access.aa; }); + Run("Core_apporder", () => { var x = Core_apporder.aa; }); + Run("Core_array", () => { var x = Core_array.aa; }); + Run("Core_attributes", () => { var x = Core_attributes.aa; }); + Run("Core_comprehensions", () => { var x = Core_comprehensions.aa; }); + */ Run("Core_control", () => { var x = Core_control.aa; }); - Run("Core_controlChamenos", () => { var x = Core_controlChamenos.aa; }); + /* + * Run("Core_controlChamenos", () => { var x = Core_controlChamenos.aa; }); Run("Core_controlMailBox", () => { var x = Core_controlMailBox.aa; }); Run("Core_controlStackOverflow", () => { var x = Core_controlStackOverflow.aa; }); Run("Core_csext", () => { var x = Core_csext.aa; }); @@ -53,7 +55,7 @@ static int Main(string[] args) Run("Core_syntax", () => { var x = Core_syntax.aa; }); Run("Core_tlr", () => { var x = Core_tlr.aa; }); Run("Core_unicode", () => { var x = Core_unicode.aa; }); - + */ return returnCode; } diff --git a/tests/fsharp/core/quotes/test.fsx b/tests/fsharp/core/quotes/test.fsx index c17aa14d626..06c8b604305 100644 --- a/tests/fsharp/core/quotes/test.fsx +++ b/tests/fsharp/core/quotes/test.fsx @@ -4,8 +4,7 @@ module Core_quotes #endif #light -#if Portable -#else +#if !Portable #r "cslib.dll" #endif @@ -24,8 +23,7 @@ let check s v1 v2 = report_failure s -#if NetCore -#else +#if !NetCore let argv = System.Environment.GetCommandLineArgs() let SetCulture() = if argv.Length > 2 && argv.[1] = "--culture" then @@ -107,8 +105,7 @@ module TypedTest = begin test "check ~UInt64" ((<@ "1" @> |> (function UInt64 _ -> false | _ -> true))) test "check ~String" ((<@ 1 @> |> (function String "1" -> false | _ -> true))) -#if FSHARP_CORE_31 -#else +#if !FSHARP_CORE_31 test "check Decimal" ((<@ 1M @> |> (function Decimal 1M -> true | _ -> false))) test "check ~Decimal" ((<@ "1" @> |> (function Decimal _ -> false | _ -> true))) test "check ~Decimal neither" ((<@ 1M + 1M @> |> (function Decimal _ -> false | _ -> true))) @@ -531,7 +528,7 @@ module TypedTest = begin | _ -> false end -#if FSHARP_CORE_31 +#if FSHARP_CORE_31 || Portable #else test "check accesses to readonly fields in ReflectedDefinitions" begin @@ -1906,8 +1903,7 @@ module TestQuotationOfCOnstructors = | _ -> false) -#if NetCore -#else +#if !NetCore // Also test getting the reflected definition for private members implied by "let f() = ..." bindings let fMethod = (typeof.GetMethod("f", Reflection.BindingFlags.Instance ||| Reflection.BindingFlags.Public ||| Reflection.BindingFlags.NonPublic)) @@ -2237,8 +2233,7 @@ module ReflectedDefinitionOnTypesWithImplicitCodeGen = #endif check "celnwer35" (Quotations.Expr.TryGetReflectedDefinition(m).IsNone) true -#if Portable -#else +#if !Portable module BasicUsingTEsts = let q1() = let a = ResizeArray<_>() @@ -2410,8 +2405,7 @@ module QuotationOfResizeArrayIteration = -#if FSHARP_CORE_31 -#else +#if !FSHARP_CORE_31 module TestAutoQuoteAtStaticMethodCalls = open Microsoft.FSharp.Quotations @@ -2727,8 +2721,10 @@ module PartialApplicationLeadToInvalidCodeWhenOptimized = f () +#if !NetCore module TestAssemblyAttributes = let attributes = System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(false) +#endif let aa = if not failures.IsEmpty then (printfn "Test Failed, failures = %A" failures; exit 1) diff --git a/tests/fsharp/core/tests_core.fs b/tests/fsharp/core/tests_core.fs index a17db675120..3727e2a667b 100644 --- a/tests/fsharp/core/tests_core.fs +++ b/tests/fsharp/core/tests_core.fs @@ -7,161 +7,109 @@ open NUnit.Framework open NUnitConf open PlatformHelpers open FSharpTestSuiteTypes -open FSharpTestSuiteAsserts +open SingleTest -let testContext = FSharpTestSuite.testContext - -let singleTestBuildAndRun p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) +[] +let access p = singleTestBuildAndRun p +[] +let apporder p = singleTestBuildAndRun p -module Access = - [] - let access p = singleTestBuildAndRun p +[] +let array p = singleTestBuildAndRun p -module Apporder = - [] - let apporder p = singleTestBuildAndRun p +[] +let attributes p = singleTestBuildAndRun p -module Array = - [] - let array p = singleTestBuildAndRun p +[] +let byrefs _ = check (attempt { -module Attributes = - [] - let attributes p = singleTestBuildAndRun p + let cfg = FSharpTestSuite.testConfig () -module Byrefs = - [] - let byrefs p = check (attempt { + use testOkFile = fileguard cfg "test.ok" - let { Directory = dir; Config = cfg } = testContext () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None} p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + do! fsc cfg "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - use testOkFile = fileguard "test.ok" + do! exec cfg ("."/"test.exe") "" - do! fsc "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - - do! exec ("."/"test.exe") "" - - do! testOkFile |> NUnitConf.checkGuardExists + do! testOkFile |> NUnitConf.checkGuardExists - do! fsi "" ["test.fsx"] + do! fsi cfg "" ["test.fsx"] - do! testOkFile |> NUnitConf.checkGuardExists + do! testOkFile |> NUnitConf.checkGuardExists - }) + }) -module Comprehensions = - [] - let comprehensions p = singleTestBuildAndRun p +[] +let comprehensions p = singleTestBuildAndRun p -module ComprehensionsHw = - [] - let comprehensions p = singleTestBuildAndRun p +[] +let comprehensionshw p = singleTestBuildAndRun p -module Control = - [] - let control p = singleTestBuildAndRun p +[] +let control p = singleTestBuildAndRun p - [] - let ``control --tailcalls`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () +[] +let ``control --tailcalls`` p = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! SingleTestBuild.singleTestBuild cfg dir p + do! singleTestBuild cfg p - do! SingleTestRun.singleTestRun {cfg with fsi_flags = " --tailcalls" } dir p - }) + do! singleTestRun {cfg with fsi_flags = " --tailcalls" } p + }) -module ControlChamenos = - [] - let controlChamenos p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () +[] +let controlChamenos p = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! SingleTestBuild.singleTestBuild cfg dir p + do! singleTestBuild cfg p - do! SingleTestRun.singleTestRun { cfg with fsi_flags = " --tailcalls" } dir p - }) + do! singleTestRun { cfg with fsi_flags = " --tailcalls" } p + }) -module ControlMailbox = - [] - let controlMailbox p = singleTestBuildAndRun p +[] +let controlMailbox p = singleTestBuildAndRun p - [] - let ``controlMailbox --tailcalls`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () +[] +let ``controlMailbox --tailcalls`` p = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! SingleTestBuild.singleTestBuild cfg dir p + do! singleTestBuild cfg p - do! SingleTestRun.singleTestRun { cfg with fsi_flags = " --tailcalls" } dir p - }) - -module ControlWpf = - [] - let controlWpf p = singleTestBuildAndRun p - -module Csext = - [] - let csext p = singleTestBuildAndRun p - -module Events = - - let build cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None} p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) + do! singleTestRun { cfg with fsi_flags = " --tailcalls" } p + }) - // "%FSC%" %fsc_flags% -a -o:test.dll -g test.fs - do! fsc "%s -a -o:test.dll -g" cfg.fsc_flags ["test.fs"] +[] +let controlWpf p = singleTestBuildAndRun p - // "%PEVERIFY%" test.dll - do! peverify "test.dll" +[] +let csext p = singleTestBuildAndRun p - // %CSC% /r:"%FSCOREDLLPATH%" /reference:test.dll /debug+ testcs.cs - do! csc """/r:"%s" /reference:test.dll /debug+""" cfg.FSCOREDLLPATH ["testcs.cs"] - // "%PEVERIFY%" testcs.exe - do! peverify "testcs.exe" - } +[] +let events () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None} p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + // "%FSC%" %fsc_flags% -a -o:test.dll -g test.fs + do! fsc cfg "%s -a -o:test.dll -g" cfg.fsc_flags ["test.fs"] - use testOkFile = fileguard "test.ok" + do! peverify cfg "test.dll" - // %CLIX% "%FSI%" test.fs && ( - do! fsi "" ["test.fs"] + // %CSC% /r:"%FSCOREDLLPATH%" /reference:test.dll /debug+ testcs.cs + do! csc cfg """/r:"%s" /reference:test.dll /debug+""" cfg.FSCOREDLLPATH ["testcs.cs"] - // dir test.ok > NUL 2>&1 ) || ( - // @echo :FSI failed; - // goto Error - // set ERRORMSG=%ERRORMSG% FSI failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists + do! peverify cfg "testcs.exe" + + use testOkFile = fileguard cfg "test.ok" - // %CLIX% .\testcs.exe - do! exec ("."/"testcs.exe") "" - } + // "%FSI%" test.fs && ( + do! fsi cfg "" ["test.fs"] - [] - let events () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + do! testOkFile |> NUnitConf.checkGuardExists - do! build cfg dir - - do! run cfg dir - }) + // .\testcs.exe + do! exec cfg ("."/"testcs.exe") "" + }) // // Shadowcopy does not work for public signed assemblies @@ -175,16 +123,16 @@ module Events = // // "%FSI%" %fsi_flags% --shadowcopyreferences- < test1.fsx // [] // let ``shadowcopy disabled`` (flags: string) = check (attempt { -// let { Directory = dir; Config = cfg } = testContext () +// let cfg = FSharpTestSuite.testConfig () +// +// +// // -// let ``exec <`` l p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = Some(RedirectInput(l)) } p >> checkResult -// let ``fsi <`` = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` l) cfg.FSI flags []) -// let fileguard = (Commands.getfullpath dir) >> FileGuard.create // // // if exist test1.ok (del /f /q test1.ok) -// use testOkFile = fileguard "test1.ok" +// use testOkFile = fileguard cfg "test1.ok" // -// do! ``fsi <`` "%s %s" cfg.fsi_flags flags "test1.fsx" +// do! ``fsi <`` cfg "%s %s" cfg.fsi_flags flags "test1.fsx" // // // if NOT EXIST test1.ok goto SetError // do! testOkFile |> NUnitConf.checkGuardExists @@ -196,17 +144,17 @@ module Events = // // "%FSI%" %fsi_flags% --shadowcopyreferences < test2.fsx // [] // let ``shadowcopy enabled`` (flags: string) = check (attempt { -// let { Directory = dir; Config = cfg } = testContext () +// let cfg = FSharpTestSuite.testConfig () +// +// +// // -// let ``exec <`` l p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = Some(RedirectInput(l)) } p >> checkResult -// let ``fsi <`` = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` l) cfg.FSI flags []) -// let fileguard = (Commands.getfullpath dir) >> FileGuard.create // // // if exist test2.ok (del /f /q test2.ok) -// use testOkFile = fileguard "test2.ok" +// use testOkFile = fileguard cfg "test2.ok" // // // "%FSI%" %fsi_flags% /shadowcopyreferences+ < test2.fsx -// do! ``fsi <`` "%s %s" cfg.fsi_flags flags "test2.fsx" +// do! ``fsi <`` cfg "%s %s" cfg.fsi_flags flags "test2.fsx" // // // if NOT EXIST test2.ok goto SetError // do! testOkFile |> NUnitConf.checkGuardExists @@ -214,18 +162,13 @@ module Events = -module Forwarders = +[] +let forwarders () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - [] - let forwarders () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let copy_y f = Commands.copy_y dir f >> checkResult - let mkdir = Commands.mkdir_p dir + let copy_y f = Commands.copy_y cfg.Directory f >> checkResult + let mkdir = Commands.mkdir_p cfg.Directory // mkdir orig mkdir "orig" @@ -233,19 +176,19 @@ module Forwarders = mkdir "split" // %CSC% /nologo /target:library /out:orig\a.dll /define:PART1;PART2 a.cs - do! csc """/nologo /target:library /out:orig\a.dll /define:PART1;PART2""" ["a.cs"] + do! csc cfg """/nologo /target:library /out:orig\a.dll /define:PART1;PART2""" ["a.cs"] // %CSC% /nologo /target:library /out:orig\b.dll /r:orig\a.dll b.cs - do! csc """/nologo /target:library /out:orig\b.dll /r:orig\a.dll""" ["b.cs"] + do! csc cfg """/nologo /target:library /out:orig\b.dll /r:orig\a.dll""" ["b.cs"] // "%FSC%" -a -o:orig\c.dll -r:orig\b.dll -r:orig\a.dll c.fs - do! fsc """-a -o:orig\c.dll -r:orig\b.dll -r:orig\a.dll""" ["c.fs"] + do! fsc cfg """-a -o:orig\c.dll -r:orig\b.dll -r:orig\a.dll""" ["c.fs"] // %CSC% /nologo /target:library /out:split\a-part1.dll /define:PART1;SPLIT a.cs - do! csc """/nologo /target:library /out:split\a-part1.dll /define:PART1;SPLIT""" ["a.cs"] + do! csc cfg """/nologo /target:library /out:split\a-part1.dll /define:PART1;SPLIT""" ["a.cs"] // %CSC% /nologo /target:library /r:split\a-part1.dll /out:split\a.dll /define:PART2;SPLIT a.cs - do! csc """/nologo /target:library /r:split\a-part1.dll /out:split\a.dll /define:PART2;SPLIT""" ["a.cs"] + do! csc cfg """/nologo /target:library /r:split\a-part1.dll /out:split\a.dll /define:PART2;SPLIT""" ["a.cs"] // copy /y orig\b.dll split\b.dll do! copy_y ("orig"/"b.dll") ("split"/"b.dll") @@ -253,146 +196,83 @@ module Forwarders = do! copy_y ("orig"/"c.dll") ("split"/"c.dll") // "%FSC%" -o:orig\test.exe -r:orig\b.dll -r:orig\a.dll test.fs - do! fsc """-o:orig\test.exe -r:orig\b.dll -r:orig\a.dll""" ["test.fs"] + do! fsc cfg """-o:orig\test.exe -r:orig\b.dll -r:orig\a.dll""" ["test.fs"] // "%FSC%" -o:split\test.exe -r:split\b.dll -r:split\a-part1.dll -r:split\a.dll test.fs - do! fsc """-o:split\test.exe -r:split\b.dll -r:split\a-part1.dll -r:split\a.dll""" ["test.fs"] + do! fsc cfg """-o:split\test.exe -r:split\b.dll -r:split\a-part1.dll -r:split\a.dll""" ["test.fs"] // "%FSC%" -o:split\test-against-c.exe -r:split\c.dll -r:split\a-part1.dll -r:split\a.dll test.fs - do! fsc """-o:split\test-against-c.exe -r:split\c.dll -r:split\a-part1.dll -r:split\a.dll""" ["test.fs"] - - // pushd split - // "%PEVERIFY%" a-part1.dll - do! peverify ("split"/"a-part1.dll") + do! fsc cfg """-o:split\test-against-c.exe -r:split\c.dll -r:split\a-part1.dll -r:split\a.dll""" ["test.fs"] - // REM "%PEVERIFY%" a.dll - // REM @if ERRORLEVEL 1 goto Error + do! peverify cfg ("split"/"a-part1.dll") - // "%PEVERIFY%" b.dll - do! peverify ("split"/"b.dll") + do! peverify cfg ("split"/"b.dll") - // "%PEVERIFY%" c.dll - do! peverify ("split"/"c.dll") + do! peverify cfg ("split"/"c.dll") - // "%PEVERIFY%" test.exe - do! peverify ("split"/"test.exe") + do! peverify cfg ("split"/"test.exe") - // "%PEVERIFY%" test-against-c.exe - do! peverify ("split"/"test-against-c.exe") - - // popd + do! peverify cfg ("split"/"test-against-c.exe") }) -module FsFromCs = - - let build cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let fsc_flags = cfg.fsc_flags +[] +let fsfromcs () = check (attempt { + let cfg = FSharpTestSuite.testConfig () // "%FSC%" %fsc_flags% -a --doc:lib.xml -o:lib.dll -g lib.fs - do! fsc "%s -a --doc:lib.xml -o:lib.dll -g" fsc_flags ["lib.fs"] + do! fsc cfg "%s -a --doc:lib.xml -o:lib.dll -g" cfg.fsc_flags ["lib.fs"] - // "%PEVERIFY%" lib.dll - do! peverify "lib.dll" + do! peverify cfg "lib.dll" // %CSC% /nologo /r:"%FSCOREDLLPATH%" /r:System.Core.dll /r:lib.dll /out:test.exe test.cs - do! csc """/nologo /r:"%s" /r:System.Core.dll /r:lib.dll /out:test.exe""" cfg.FSCOREDLLPATH ["test.cs"] + do! csc cfg """/nologo /r:"%s" /r:System.Core.dll /r:lib.dll /out:test.exe""" cfg.FSCOREDLLPATH ["test.cs"] // "%FSC%" %fsc_flags% -a --doc:lib--optimize.xml -o:lib--optimize.dll -g lib.fs - do! fsc """%s -a --doc:lib--optimize.xml -o:lib--optimize.dll -g""" fsc_flags ["lib.fs"] + do! fsc cfg """%s -a --doc:lib--optimize.xml -o:lib--optimize.dll -g""" cfg.fsc_flags ["lib.fs"] - // "%PEVERIFY%" lib--optimize.dll - do! peverify "lib--optimize.dll" + do! peverify cfg "lib--optimize.dll" // %CSC% - do! csc """/nologo /r:"%s" /r:System.Core.dll /r:lib--optimize.dll /out:test--optimize.exe""" cfg.FSCOREDLLPATH ["test.cs"] - - } - - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - - // %CLIX% .\test.exe - do! exec ("."/"test.exe") "" + do! csc cfg """/nologo /r:"%s" /r:System.Core.dll /r:lib--optimize.dll /out:test--optimize.exe""" cfg.FSCOREDLLPATH ["test.cs"] - // %CLIX% .\test--optimize.exe - do! exec ("."/"test--optimize.exe") "" + // .\test.exe + do! exec cfg ("."/"test.exe") "" - } - - [] - let fsfromcs () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + // .\test--optimize.exe + do! exec cfg ("."/"test--optimize.exe") "" }) -module FsFromFsViaCs = +[] +let fsfromfsviacs () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let build cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let fsc_flags = cfg.fsc_flags + do! fsc cfg "%s -a -o:lib.dll -g" cfg.fsc_flags ["lib.fs"] - do! fsc "%s -a -o:lib.dll -g" fsc_flags ["lib.fs"] + do! peverify cfg "lib.dll" - do! peverify "lib.dll" + do! csc cfg """/nologo /target:library /r:"%s" /r:lib.dll /out:lib2.dll""" cfg.FSCOREDLLPATH ["lib2.cs"] - do! csc """/nologo /target:library /r:"%s" /r:lib.dll /out:lib2.dll""" cfg.FSCOREDLLPATH ["lib2.cs"] + do! csc cfg """/nologo /target:library /r:"%s" /out:lib3.dll""" cfg.FSCOREDLLPATH ["lib3.cs"] - do! csc """/nologo /target:library /r:"%s" /out:lib3.dll""" cfg.FSCOREDLLPATH ["lib3.cs"] + do! fsc cfg "%s -r:lib.dll -r:lib2.dll -r:lib3.dll -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - do! fsc "%s -r:lib.dll -r:lib2.dll -r:lib3.dll -o:test.exe -g" fsc_flags ["test.fsx"] - - do! peverify "test.exe" + do! peverify cfg "test.exe" // Same with library references the other way around - do! fsc "%s -r:lib.dll -r:lib3.dll -r:lib2.dll -o:test.exe -g" fsc_flags ["test.fsx"] - - do! peverify "test.exe" - - } - - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - - // %CLIX% .\test.exe - do! exec ("."/"test.exe") "" - - } - - [] - let fsfromfsviacs () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + do! fsc cfg "%s -r:lib.dll -r:lib3.dll -r:lib2.dll -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - do! build cfg dir + do! peverify cfg "test.exe" - do! run cfg dir + do! exec cfg ("."/"test.exe") "" }) -module ``FSI-reload`` = - - [] - let ``fsi-reload`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let ``exec <`` l p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = Some(RedirectInput(l)) } p >> checkResult - let ``fsi <`` = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` l) cfg.FSI flags []) - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) +[] +let ``fsi-reload`` () = check (attempt { + let cfg = FSharpTestSuite.testConfig () /////// build.bat /////// @@ -402,781 +282,575 @@ module ``FSI-reload`` = /////// run.bat //////// do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + + use testOkFile = fileguard cfg "test.ok" // "%FSI%" %fsi_flags% --maxerrors:1 < test1.ml - do! ``fsi <`` "%s --maxerrors:1" cfg.fsi_flags "test1.ml" - // if NOT EXIST test.ok goto SetError + do! ``fsi <`` cfg "%s --maxerrors:1" cfg.fsi_flags "test1.ml" + do! testOkFile |> NUnitConf.checkGuardExists } do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + + use testOkFile = fileguard cfg "test.ok" // "%FSI%" %fsi_flags% --maxerrors:1 load1.fsx - do! fsi "%s --maxerrors:1" cfg.fsi_flags ["load1.fsx"] - // if NOT EXIST test.ok goto SetError + do! fsi cfg "%s --maxerrors:1" cfg.fsi_flags ["load1.fsx"] + do! testOkFile |> NUnitConf.checkGuardExists } do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + + use testOkFile = fileguard cfg "test.ok" // "%FSI%" %fsi_flags% --maxerrors:1 load2.fsx - do! fsi "%s --maxerrors:1" cfg.fsi_flags ["load2.fsx"] - // if NOT EXIST test.ok goto SetError + do! fsi cfg "%s --maxerrors:1" cfg.fsi_flags ["load2.fsx"] + do! testOkFile |> NUnitConf.checkGuardExists } - // REM Check we can also compile, for sanity's sake // "%FSC%" load1.fsx - do! fsc "" ["load1.fsx"] + do! fsc cfg "" ["load1.fsx"] - // REM Check we can also compile, for sanity's sake // "%FSC%" load2.fsx - do! fsc "" ["load2.fsx"] + do! fsc cfg "" ["load2.fsx"] }) -module fsiAndModifiers = - - let build cfg dir = attempt { - let ``exec <`` l p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = Some(RedirectInput(l)) } p >> checkResult - let ``fsi <`` = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` l) cfg.FSI flags []) - let del = Commands.rm dir - let exist = Commands.fileExists dir >> Option.isSome +[] +let fsiAndModifiers () = check (attempt { + let cfg = FSharpTestSuite.testConfig () // if exist TestLibrary.dll (del /f /q TestLibrary.dll) - do if exist "TestLibrary.dll" then del "TestLibrary.dll" + do if fileExists cfg "TestLibrary.dll" then rm cfg "TestLibrary.dll" // "%FSI%" %fsi_flags% --maxerrors:1 < prepare.fsx - do! ``fsi <`` "%s --maxerrors:1" cfg.fsi_flags "prepare.fsx" - - } - - let run cfg dir = attempt { - let ``exec <`` l p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = Some(RedirectInput(l)) } p >> checkResult - let ``fsi <`` = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` l) cfg.FSI flags []) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + do! ``fsi <`` cfg "%s --maxerrors:1" cfg.fsi_flags "prepare.fsx" - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + use testOkFile = fileguard cfg "test.ok" // "%FSI%" %fsi_flags% --maxerrors:1 < test.fsx - do! ``fsi <`` "%s --maxerrors:1" cfg.fsi_flags "test.fsx" + do! ``fsi <`` cfg "%s --maxerrors:1" cfg.fsi_flags "test.fsx" - // if NOT EXIST test.ok goto SetError do! testOkFile |> NUnitConf.checkGuardExists - - } - - [] - let fsiAndModifiers () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir }) -module GenericMeasures = - - [] - let genericmeasures p = singleTestBuildAndRun p - -module Hiding = - - [] - let hiding () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () +[] +let genericmeasures p = singleTestBuildAndRun p - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc_flags = cfg.fsc_flags +[] +let hiding () = check (attempt { + let cfg = FSharpTestSuite.testConfig () // "%FSC%" %fsc_flags% -a --optimize -o:lib.dll lib.mli lib.ml libv.ml - do! fsc "%s -a --optimize -o:lib.dll" fsc_flags ["lib.mli";"lib.ml";"libv.ml"] + do! fsc cfg "%s -a --optimize -o:lib.dll" cfg.fsc_flags ["lib.mli";"lib.ml";"libv.ml"] - // "%PEVERIFY%" lib.dll - do! peverify "lib.dll" + do! peverify cfg "lib.dll" // "%FSC%" %fsc_flags% -a --optimize -r:lib.dll -o:lib2.dll lib2.mli lib2.ml lib3.ml - do! fsc "%s -a --optimize -r:lib.dll -o:lib2.dll" fsc_flags ["lib2.mli";"lib2.ml";"lib3.ml"] + do! fsc cfg "%s -a --optimize -r:lib.dll -o:lib2.dll" cfg.fsc_flags ["lib2.mli";"lib2.ml";"lib3.ml"] - // "%PEVERIFY%" lib2.dll - do! peverify "lib2.dll" + do! peverify cfg "lib2.dll" // "%FSC%" %fsc_flags% --optimize -r:lib.dll -r:lib2.dll -o:client.exe client.ml - do! fsc "%s --optimize -r:lib.dll -r:lib2.dll -o:client.exe" fsc_flags ["client.ml"] + do! fsc cfg "%s --optimize -r:lib.dll -r:lib2.dll -o:client.exe" cfg.fsc_flags ["client.ml"] - // "%PEVERIFY%" client.exe - do! peverify "client.exe" + do! peverify cfg "client.exe" }) -module Innerpoly = - - [] - let innerpoly p = singleTestBuildAndRun p - +[] +let innerpoly p = singleTestBuildAndRun p -module ``test int32`` = - - [] - let int32 p = singleTestBuildAndRun p +[] +let ``test int32`` p = singleTestBuildAndRun p +[] +let queriesCustomQueryOps () = check (attempt { + let cfg = FSharpTestSuite.testConfig () -module QueriesCustomQueryOps = + // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx + do! fsc cfg """%s -o:test.exe -g""" cfg.fsc_flags ["test.fsx"] - let build cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let fsc_flags = cfg.fsc_flags + do! peverify cfg "test.exe" - // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx - do! fsc """%s -o:test.exe -g""" fsc_flags ["test.fsx"] + // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx + do! fsc cfg """%s --optimize -o:test--optimize.exe -g""" cfg.fsc_flags ["test.fsx"] - // "%PEVERIFY%" test.exe - do! peverify "test.exe" + do! peverify cfg "test--optimize.exe" - // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx - do! fsc """%s --optimize -o:test--optimize.exe -g""" fsc_flags ["test.fsx"] + do! singleNegTest cfg "negativetest" - // "%PEVERIFY%" test--optimize.exe - do! peverify "test--optimize.exe" + do! attempt { + use testOkFile = fileguard cfg "test.ok" - // call ..\..\single-neg-test.bat negativetest - do! SingleNegTest.singleNegTest cfg dir "negativetest" - - } + do! fsi cfg "%s" cfg.fsi_flags ["test.fsx"] - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + do! testOkFile |> NUnitConf.checkGuardExists + } - // echo TestC - log "TestC" - do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + do! attempt { + use testOkFile = fileguard cfg "test.ok" - // "%FSI%" %fsi_flags% test.fsx - do! fsi "%s" cfg.fsi_flags ["test.fsx"] + do! exec cfg ("."/"test.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists + do! testOkFile |> NUnitConf.checkGuardExists } - // echo TestD - log "TestD" - do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + do! attempt { + use testOkFile = fileguard cfg "test.ok" - // %CLIX% test.exe - do! exec ("."/"test.exe") "" - - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - } - - do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - - // %CLIX% test--optimize.exe - do! exec ("."/"test--optimize.exe") "" - - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - } + do! exec cfg ("."/"test--optimize.exe") "" + do! testOkFile |> NUnitConf.checkGuardExists } - - [] - let queriesCustomQueryOps () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir - }) + }) -module Printing = +[] +[] +[] +[] +[] +[] +let printing flag diffFileOut expectedFileOut diffFileErr expectedFileErr = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%FSI%" %fsc_flags_errors_ok% --nologo --use:preludePrintSize200.fsx z.raw.output.test.200.txt 2>&1 - // findstr /v "%CD%" z.raw.output.test.200.txt | findstr /v -C:"--help' for options" > z.output.test.200.txt - // if NOT EXIST z.output.test.200.bsl COPY z.output.test.200.txt z.output.test.200.bsl - // %PRDIFF% z.output.test.200.txt z.output.test.200.bsl > z.output.test.200.diff - [] - [] - [] - [] - [] - [] - let printing flag diffFileOut expectedFileOut diffFileErr expectedFileErr = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! requireENCulture () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let copy from' = Commands.copy_y dir from' >> checkResult - let fileExists = Commands.fileExists dir >> Option.isSome - let getfullpath = Commands.getfullpath dir - - let ``fsi b 2>c`` = - // "%FSI%" %fsc_flags_errors_ok% --nologo z.raw.output.test.default.txt 2>&1 - let ``exec b 2>c`` (inFile, outFile, errFile) p = - Command.exec dir cfg.EnvironmentVariables { Output = OutputAndError(Overwrite(outFile), Overwrite(errFile)); Input = Some(RedirectInput(inFile)); } p - >> checkResult - Printf.ksprintf (fun flags (inFile, outFile, errFile) -> Commands.fsi (``exec b 2>c`` (inFile, outFile, errFile)) cfg.FSI flags []) - - let fsdiff a b = - let ``exec >`` f p = Command.exec dir cfg.EnvironmentVariables { Output = Output(Overwrite(f)); Input = None} p >> checkResult - let diffFile = Path.ChangeExtension(a, ".diff") - Commands.fsdiff (``exec >`` diffFile) cfg.FSDIFF a b + do! requireENCulture () - let fsc_flags_errors_ok = "" + let copy from' = Commands.copy_y cfg.Directory from' >> checkResult - // echo == Plain + let ``fsi b 2>c`` = // "%FSI%" %fsc_flags_errors_ok% --nologo z.raw.output.test.default.txt 2>&1 - // echo == PrintSize 1000 - // "%FSI%" %fsc_flags_errors_ok% --nologo --use:preludePrintSize1000.fsx z.raw.output.test.1000.txt 2>&1 - // echo == PrintSize 200 - // "%FSI%" %fsc_flags_errors_ok% --nologo --use:preludePrintSize200.fsx z.raw.output.test.200.txt 2>&1 - // echo == ShowDeclarationValues off - // "%FSI%" %fsc_flags_errors_ok% --nologo --use:preludeShowDeclarationValuesFalse.fsx z.raw.output.test.off.txt 2>&1 - // echo == Quiet - // "%FSI%" %fsc_flags_errors_ok% --nologo --quiet z.raw.output.test.quiet.txt 2>&1 - let rawFileOut = Path.GetTempFileName() - let rawFileErr = Path.GetTempFileName() - do! ``fsi b 2>c`` "%s --nologo %s" fsc_flags_errors_ok flag ("test.fsx", rawFileOut, rawFileErr) - - // REM REVIEW: want to normalise CWD paths, not suppress them. - let ``findstr /v`` text = Seq.filter (fun (s: string) -> not <| s.Contains(text)) - let removeCDandHelp from' to' = - File.ReadLines from' |> (``findstr /v`` dir) |> (``findstr /v`` "--help' for options") |> (fun lines -> File.WriteAllLines(getfullpath to', lines)) - - // findstr /v "%CD%" z.raw.output.test.default.txt | findstr /v -C:"--help' for options" > z.output.test.default.txt - // findstr /v "%CD%" z.raw.output.test.1000.txt | findstr /v -C:"--help' for options" > z.output.test.1000.txt - // findstr /v "%CD%" z.raw.output.test.200.txt | findstr /v -C:"--help' for options" > z.output.test.200.txt - // findstr /v "%CD%" z.raw.output.test.off.txt | findstr /v -C:"--help' for options" > z.output.test.off.txt - // findstr /v "%CD%" z.raw.output.test.quiet.txt | findstr /v -C:"--help' for options" > z.output.test.quiet.txt - removeCDandHelp rawFileOut diffFileOut - removeCDandHelp rawFileErr diffFileErr - - let withDefault default' to' = - if not (fileExists to') then Some (copy default' to') else None - - do! expectedFileOut |> withDefault diffFileOut - do! expectedFileErr |> withDefault diffFileErr - - do! fsdiff diffFileOut expectedFileOut - do! fsdiff diffFileErr expectedFileErr - - ignore "printed to log" + let ``exec b 2>c`` (inFile, outFile, errFile) p = + Command.exec cfg.Directory cfg.EnvironmentVariables { Output = OutputAndError(Overwrite(outFile), Overwrite(errFile)); Input = Some(RedirectInput(inFile)); } p + >> checkResult + Printf.ksprintf (fun flags (inFile, outFile, errFile) -> Commands.fsi (``exec b 2>c`` (inFile, outFile, errFile)) cfg.FSI flags []) + + let fsdiff a b = + let ``exec >`` f p = Command.exec cfg.Directory cfg.EnvironmentVariables { Output = Output(Overwrite(f)); Input = None} p >> checkResult + let diffFile = Path.ChangeExtension(a, ".diff") + Commands.fsdiff (``exec >`` diffFile) cfg.FSDIFF a b + + let fsc_flags_errors_ok = "" + + // echo == Plain + // "%FSI%" %fsc_flags_errors_ok% --nologo z.raw.output.test.default.txt 2>&1 + // echo == PrintSize 1000 + // "%FSI%" %fsc_flags_errors_ok% --nologo --use:preludePrintSize1000.fsx z.raw.output.test.1000.txt 2>&1 + // echo == PrintSize 200 + // "%FSI%" %fsc_flags_errors_ok% --nologo --use:preludePrintSize200.fsx z.raw.output.test.200.txt 2>&1 + // echo == ShowDeclarationValues off + // "%FSI%" %fsc_flags_errors_ok% --nologo --use:preludeShowDeclarationValuesFalse.fsx z.raw.output.test.off.txt 2>&1 + // echo == Quiet + // "%FSI%" %fsc_flags_errors_ok% --nologo --quiet z.raw.output.test.quiet.txt 2>&1 + let rawFileOut = Path.GetTempFileName() + let rawFileErr = Path.GetTempFileName() + do! ``fsi b 2>c`` "%s --nologo %s" fsc_flags_errors_ok flag ("test.fsx", rawFileOut, rawFileErr) + // REM REVIEW: want to normalise CWD paths, not suppress them. + let ``findstr /v`` text = Seq.filter (fun (s: string) -> not <| s.Contains(text)) + let removeCDandHelp from' to' = + File.ReadLines from' |> (``findstr /v`` cfg.Directory) |> (``findstr /v`` "--help' for options") |> (fun lines -> File.WriteAllLines(getfullpath cfg to', lines)) - }) + removeCDandHelp rawFileOut diffFileOut + removeCDandHelp rawFileErr diffFileErr -module Quotes = + let withDefault default' to' = + if not (fileExists cfg to') then Some (copy default' to') else None - let build cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc_flags = cfg.fsc_flags - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) + do! expectedFileOut |> withDefault diffFileOut + do! expectedFileErr |> withDefault diffFileErr - //missing csc - do! csc """/nologo /target:library /out:cslib.dll""" ["cslib.cs"] + do! fsdiff diffFileOut expectedFileOut + do! fsdiff diffFileErr expectedFileErr - // "%FSC%" %fsc_flags% -o:test.exe -r cslib.dll -g test.fsx - do! fsc "%s -o:test.exe -r cslib.dll -g" fsc_flags ["test.fsx"] + }) - // "%PEVERIFY%" test.exe - do! peverify "test.exe" +(* + +[] +[] +[] +[] +[] +[] +[] +[] +[] +// Test dumpbin with SHA 1024 bit key public signed CL +[] +// Test SHA1 key full signed Attributes +[] +// Test SHA1 key delayl signed Attributes +[] +[] +// Test SHA 256 bit key delay signed Attributes +[] +// Test SHA 512 bit key fully signed Attributes +[] +// Test SHA 512 bit key delay signed Attributes +[] +// Test SHA 1024 bit key fully signed Attributes +[] +// Test dumpbin with SHA 1024 bit key public signed CL +[] +let signedtest args bslfile = attempt { + + let cfg = FSharpTestSuite.testConfig () + let cfg = { cfg with fsc_flags=cfg.fsc_flags + " " + args } + let ``exec >>`` f p = Command.exec cfg.Directory cfg.EnvironmentVariables { Output = Output(Append(f)); Input = None} p - // "%FSC%" %fsc_flags% -o:test-with-debug-data.exe --quotations-debug+ -r cslib.dll -g test.fsx - do! fsc "%s -o:test-with-debug-data.exe --quotations-debug+ -r cslib.dll -g" fsc_flags ["test.fsx"] - // "%PEVERIFY%" test-with-debug-data.exe - do! peverify "test-with-debug-data.exe" + let ``sn >>`` outfile = ``exec >>`` outfile cfg.SN + let fsdiff a b = + let diffFile = Path.ChangeExtension(a, ".diff") + Commands.fsdiff (``exec >>`` diffFile) cfg.FSDIFF a b - // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -r cslib.dll -g test.fsx - do! fsc "%s --optimize -o:test--optimize.exe -r cslib.dll -g" fsc_flags ["test.fsx"] + let outfile = Path.ChangeExtension(bslfile,"sn.out") + let exefile = Path.ChangeExtension(bslfile,"exe") + do File.WriteAllLines(outfile,["sn -q stops all output except error messages"; + "if the output is a valid file no output is produced." + "delay-signed and unsigned produce error messages."]) - // "%PEVERIFY%" test--optimize.exe - do! peverify "test--optimize.exe" - + do! fsc cfg "%s -o:%s" cfg.fsc_flags exefile ["test.fs"] + do! ``sn >>`` outfile ("-q -vf "+exefile) |> (fun _ -> Success) + do! fsdiff outfile bslfile |> checkResult } +*) - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create +[] +let quotes () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + do! csc cfg """/nologo /target:library /out:cslib.dll""" ["cslib.cs"] - // "%FSI%" %fsi_flags% -r cslib.dll test.fsx - do! fsi "%s -r cslib.dll" cfg.fsi_flags ["test.fsx"] - - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - } + // "%FSC%" %fsc_flags% -o:test.exe -r cslib.dll -g test.fsx + do! fsc cfg "%s -o:test.exe -r cslib.dll -g" cfg.fsc_flags ["test.fsx"] - do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + do! peverify cfg "test.exe" - // %CLIX% test.exe - do! exec ("."/"test.exe") "" + // "%FSC%" %fsc_flags% -o:test-with-debug-data.exe --quotations-debug+ -r cslib.dll -g test.fsx + do! fsc cfg "%s -o:test-with-debug-data.exe --quotations-debug+ -r cslib.dll -g" cfg.fsc_flags ["test.fsx"] - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - } + do! peverify cfg "test-with-debug-data.exe" - do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -r cslib.dll -g test.fsx + do! fsc cfg "%s --optimize -o:test--optimize.exe -r cslib.dll -g" cfg.fsc_flags ["test.fsx"] - // %CLIX% test-with-debug-data.exe - do! exec ("."/"test-with-debug-data.exe") "" + do! peverify cfg "test--optimize.exe" - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - } - - do! attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - - // %CLIX% test--optimize.exe - do! exec ("."/"test--optimize.exe") "" + do! attempt { + use testOkFile = fileguard cfg "test.ok" - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - } + // "%FSI%" %fsi_flags% -r cslib.dll test.fsx + do! fsi cfg "%s -r cslib.dll" cfg.fsi_flags ["test.fsx"] + + do! testOkFile |> NUnitConf.checkGuardExists } - [] - let quotes () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir - - }) - + do! attempt { -module Namespaces = + use testOkFile = fileguard cfg "test.ok" - [] - let attributes p = singleTestBuildAndRun p - -module Parsing = - - [] - let parsing () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc_flags = cfg.fsc_flags - - // "%FSC%" %fsc_flags% -a -o:crlf.dll -g crlf.ml - do! fsc "%s -a -o:crlf.dll -g" fsc_flags ["crlf.ml"] - - // "%FSC%" %fsc_flags% -o:toplet.exe -g toplet.ml - do! fsc "%s -o:toplet.exe -g" fsc_flags ["toplet.ml"] + + do! exec cfg ("."/"test.exe") "" - // "%PEVERIFY%" toplet.exe - do! peverify "toplet.exe" - }) + do! testOkFile |> NUnitConf.checkGuardExists + } -module Unicode = + do! attempt { - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let fsc_flags = cfg.fsc_flags + use testOkFile = fileguard cfg "test.ok" - // REM just checking the files actually parse/compile for now.... + // test-with-debug-data.exe + do! exec cfg ("."/"test-with-debug-data.exe") "" - // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g kanji-unicode-utf8-nosig-codepage-65001.fs - do! fsc "%s -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g" fsc_flags ["kanji-unicode-utf8-nosig-codepage-65001.fs"] - // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g kanji-unicode-utf8-nosig-codepage-65001.fs - do! fsc "%s -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g" fsc_flags ["kanji-unicode-utf8-nosig-codepage-65001.fs"] + do! testOkFile |> NUnitConf.checkGuardExists + } - let codepage = attempt { - // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf16.dll -g kanji-unicode-utf16.fs - do! fsc "%s -a -o:kanji-unicode-utf16.dll -g" fsc_flags ["kanji-unicode-utf16.fs"] + do! attempt { - // "%FSC%" %fsc_flags% -a --codepage:65000 -o:kanji-unicode-utf7-codepage-65000.dll -g kanji-unicode-utf7-codepage-65000.fs - do! fsc "%s -a --codepage:65000 -o:kanji-unicode-utf7-codepage-65000.dll -g" fsc_flags ["kanji-unicode-utf7-codepage-65000.fs"] - } + use testOkFile = fileguard cfg "test.ok" - // REM check non-utf8 and --codepage flag for bootstrapped fsc.exe - // if NOT "%FSC:fscp=X%" == "%FSC%" ( - do! if not <| cfg.FSC.Contains("fscp") then codepage else Success + // test--optimize.exe + do! exec cfg ("."/"test--optimize.exe") "" - // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf8-withsig-codepage-65001.dll -g kanji-unicode-utf8-withsig-codepage-65001.fs - do! fsc "%s -a -o:kanji-unicode-utf8-withsig-codepage-65001.dll -g" fsc_flags ["kanji-unicode-utf8-withsig-codepage-65001.fs"] - } - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fsi_flags = cfg.fsi_flags - - // if exist test.ok (del /f /q test.ok) - ignore "unused" - // "%FSI%" %fsi_flags% --utf8output kanji-unicode-utf8-nosig-codepage-65001.fs - do! fsi "%s --utf8output" fsi_flags ["kanji-unicode-utf8-nosig-codepage-65001.fs"] - - // if exist test.ok (del /f /q test.ok) - ignore "unused" - // "%FSI%" %fsi_flags% --utf8output --codepage:65001 kanji-unicode-utf8-withsig-codepage-65001.fs - do! fsi "%s --utf8output --codepage:65001" fsi_flags ["kanji-unicode-utf8-withsig-codepage-65001.fs"] - - // if exist test.ok (del /f /q test.ok) - ignore "unused" - // "%FSI%" %fsi_flags% --utf8output kanji-unicode-utf8-withsig-codepage-65001.fs - do! fsi "%s --utf8output" fsi_flags ["kanji-unicode-utf8-withsig-codepage-65001.fs"] - - // if exist test.ok (del /f /q test.ok) - ignore "unused" - // "%FSI%" %fsi_flags% --utf8output --codepage:65000 kanji-unicode-utf7-codepage-65000.fs - do! fsi "%s --utf8output --codepage:65000" fsi_flags ["kanji-unicode-utf7-codepage-65000.fs"] - - // if exist test.ok (del /f /q test.ok) - ignore "unused" - // "%FSI%" %fsi_flags% --utf8output kanji-unicode-utf16.fs - do! fsi "%s --utf8output" fsi_flags ["kanji-unicode-utf16.fs"] + do! testOkFile |> NUnitConf.checkGuardExists } + + }) - [] - let unicode () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - do! run cfg dir - }) +[] +let namespaceAttributes p = singleTestBuildAndRun p - [] - let unicode2 p = singleTestBuildAndRun p +[] +let parsing () = check (attempt { + let cfg = FSharpTestSuite.testConfig () + + // "%FSC%" %fsc_flags% -a -o:crlf.dll -g crlf.ml + do! fsc cfg "%s -a -o:crlf.dll -g" cfg.fsc_flags ["crlf.ml"] -module InternalsVisible = + // "%FSC%" %fsc_flags% -o:toplet.exe -g toplet.ml + do! fsc cfg "%s -o:toplet.exe -g" cfg.fsc_flags ["toplet.ml"] - [] - let internalsvisible () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + do! peverify cfg "toplet.exe" - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let fsc_flags = cfg.fsc_flags + }) - // REM Test internals visible +[] +let unicode () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // echo == Compiling F# Library - log "== Compiling F# Library" - // "%FSC%" %fsc_flags% --version:1.2.3 --keyfile:key.snk -a --optimize -o:library.dll library.fsi library.fs - do! fsc "%s --version:1.2.3 --keyfile:key.snk -a --optimize -o:library.dll" fsc_flags ["library.fsi"; "library.fs"] + // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g kanji-unicode-utf8-nosig-codepage-65001.fs + do! fsc cfg "%s -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g" cfg.fsc_flags ["kanji-unicode-utf8-nosig-codepage-65001.fs"] - // echo == Verifying F# Library - log "== Verifying F# Library" + // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g kanji-unicode-utf8-nosig-codepage-65001.fs + do! fsc cfg "%s -a -o:kanji-unicode-utf8-nosig-codepage-65001.dll -g" cfg.fsc_flags ["kanji-unicode-utf8-nosig-codepage-65001.fs"] - // "%PEVERIFY%" library.dll - do! peverify "library.dll" + let codepage = attempt { + // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf16.dll -g kanji-unicode-utf16.fs + do! fsc cfg "%s -a -o:kanji-unicode-utf16.dll -g" cfg.fsc_flags ["kanji-unicode-utf16.fs"] - // echo == Compiling C# Library - log "== Compiling C# Library" - // %CSC% /target:library /keyfile:key.snk /out:librarycs.dll librarycs.cs - do! csc "/target:library /keyfile:key.snk /out:librarycs.dll" ["librarycs.cs"] + // "%FSC%" %fsc_flags% -a --codepage:65000 -o:kanji-unicode-utf7-codepage-65000.dll -g kanji-unicode-utf7-codepage-65000.fs + do! fsc cfg "%s -a --codepage:65000 -o:kanji-unicode-utf7-codepage-65000.dll -g" cfg.fsc_flags ["kanji-unicode-utf7-codepage-65000.fs"] + } - // echo == Verifying C# Library - log "== Verifying C# Library" - // "%PEVERIFY%" librarycs.dll - do! peverify "librarycs.dll" + // REM check non-utf8 and --codepage flag for bootstrapped fsc.exe + // if NOT "%FSC:fscp=X%" == "%FSC%" ( + do! if not <| cfg.FSC.Contains("fscp") then codepage else Success - // echo == Compiling F# main referencing C# and F# libraries - log "== Compiling F# main referencing C# and F# libraries" - // "%FSC%" %fsc_flags% --version:1.2.3 --keyfile:key.snk --optimize -r:library.dll -r:librarycs.dll -o:main.exe main.fs - do! fsc "%s --version:1.2.3 --keyfile:key.snk --optimize -r:library.dll -r:librarycs.dll -o:main.exe" fsc_flags ["main.fs"] + // "%FSC%" %fsc_flags% -a -o:kanji-unicode-utf8-withsig-codepage-65001.dll -g kanji-unicode-utf8-withsig-codepage-65001.fs + do! fsc cfg "%s -a -o:kanji-unicode-utf8-withsig-codepage-65001.dll -g" cfg.fsc_flags ["kanji-unicode-utf8-withsig-codepage-65001.fs"] - // echo == Verifying F# main - log "== Verifying F# main" - // "%PEVERIFY%" main.exe - do! peverify "main.exe" + // "%FSI%" %fsi_flags% --utf8output kanji-unicode-utf8-nosig-codepage-65001.fs + do! fsi cfg "%s --utf8output" cfg.fsi_flags ["kanji-unicode-utf8-nosig-codepage-65001.fs"] - // echo == Run F# main. Quick test! - log "== Run F# main. Quick test!" - // main.exe - do! exec ("."/"main.exe") "" - }) + // "%FSI%" %fsi_flags% --utf8output --codepage:65001 kanji-unicode-utf8-withsig-codepage-65001.fs + do! fsi cfg "%s --utf8output --codepage:65001" cfg.fsi_flags ["kanji-unicode-utf8-withsig-codepage-65001.fs"] + // "%FSI%" %fsi_flags% --utf8output kanji-unicode-utf8-withsig-codepage-65001.fs + do! fsi cfg "%s --utf8output" cfg.fsi_flags ["kanji-unicode-utf8-withsig-codepage-65001.fs"] -// Repro for https://github.com/Microsoft/visualfsharp/issues/1298 -module FileOrder = + // "%FSI%" %fsi_flags% --utf8output --codepage:65000 kanji-unicode-utf7-codepage-65000.fs + do! fsi cfg "%s --utf8output --codepage:65000" cfg.fsi_flags ["kanji-unicode-utf7-codepage-65000.fs"] - [] - let fileorder () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + // "%FSI%" %fsi_flags% --utf8output kanji-unicode-utf16.fs + do! fsi cfg "%s --utf8output" cfg.fsi_flags ["kanji-unicode-utf16.fs"] + }) - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let fsc_flags = cfg.fsc_flags +[] +let unicode2 p = singleTestBuildAndRun p - log "== Compiling F# Library and Code, when empty file libfile2.fs IS NOT included" - do! fsc "%s -a --optimize -o:lib.dll " fsc_flags ["libfile1.fs"] +[] +let internalsvisible () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! peverify "lib.dll" + // Compiling F# Library + do! fsc cfg "%s --version:1.2.3 --keyfile:key.snk -a --optimize -o:library.dll" cfg.fsc_flags ["library.fsi"; "library.fs"] - do! fsc "%s -r:lib.dll -o:test.exe" fsc_flags ["test.fsx"] + do! peverify cfg "library.dll" - do! peverify "test.exe" + // Compiling C# Library + do! csc cfg "/target:library /keyfile:key.snk /out:librarycs.dll" ["librarycs.cs"] - do! exec ("."/"test.exe") "" + do! peverify cfg "librarycs.dll" - log "== Compiling F# Library and Code, when empty file libfile2.fs IS included" - do! fsc "%s -a --optimize -o:lib2.dll " fsc_flags ["libfile1.fs"; "libfile2.fs"] + // Compiling F# main referencing C# and F# libraries + do! fsc cfg "%s --version:1.2.3 --keyfile:key.snk --optimize -r:library.dll -r:librarycs.dll -o:main.exe" cfg.fsc_flags ["main.fs"] - do! peverify "lib2.dll" + do! peverify cfg "main.exe" - do! fsc "%s -r:lib2.dll -o:test2.exe" fsc_flags ["test.fsx"] + // Run F# main. Quick test! + do! exec cfg ("."/"main.exe") "" + }) - do! peverify "test2.exe" - - do! exec ("."/"test2.exe") "" - }) +// Repro for https://github.com/Microsoft/visualfsharp/issues/1298 +[] +let fileorder () = check (attempt { + let cfg = FSharpTestSuite.testConfig () -module Interop = + log "== Compiling F# Library and Code, when empty file libfile2.fs IS NOT included" + do! fsc cfg "%s -a --optimize -o:lib.dll " cfg.fsc_flags ["libfile1.fs"] - let build cfg dir = attempt { - let envVars = - cfg.EnvironmentVariables - |> Map.add "FSCOREDLLPATH" cfg.FSCOREDLLPATH - |> Map.add "FSCOREDLLNETCORE78PATH" cfg.FSCOREDLLNETCORE78PATH + do! peverify cfg "lib.dll" - let exec p = Command.exec dir envVars { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) + do! fsc cfg "%s -r:lib.dll -o:test.exe" cfg.fsc_flags ["test.fsx"] - // rd /S /Q obj - // del /f /q *.pdb *.xml *.config *.dll *.exe + do! peverify cfg "test.exe" - // "%MSBUILDTOOLSPATH%\msbuild.exe" PCL.fsproj - do! msbuild "" ["PCL.fsproj"] + do! exec cfg ("."/"test.exe") "" - // "%MSBUILDTOOLSPATH%\msbuild.exe" User.fsproj - do! msbuild "" ["User.fsproj"] + log "== Compiling F# Library and Code, when empty file libfile2.fs IS included" + do! fsc cfg "%s -a --optimize -o:lib2.dll " cfg.fsc_flags ["libfile1.fs"; "libfile2.fs"] - // %PEVERIFY% User.exe - do! peverify "User.exe" + do! peverify cfg "lib2.dll" - } + do! fsc cfg "%s -r:lib2.dll -o:test2.exe" cfg.fsc_flags ["test.fsx"] - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult + do! peverify cfg "test2.exe" - do! exec ("."/"User.exe") "" - } + do! exec cfg ("."/"test2.exe") "" + }) - [] - let interop () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - do! build cfg dir +[] +let interop () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! run cfg dir - - }) + let cfg = + { cfg with + EnvironmentVariables = + cfg.EnvironmentVariables + |> Map.add "FSCOREDLLPATH" cfg.FSCOREDLLPATH + |> Map.add "FSCOREDLLNETCORE78PATH" cfg.FSCOREDLLNETCORE78PATH } -module ``test lazy`` = + do! msbuild cfg "" ["PCL.fsproj"] - [] - let ``lazy`` p = singleTestBuildAndRun p + do! msbuild cfg "" ["User.fsproj"] -module letrec = + do! peverify cfg "User.exe" - [] - let letrec p = singleTestBuildAndRun p + do! exec cfg ("."/"User.exe") "" + + }) - [] - let ``letrec (mutrec variations part one)`` p = singleTestBuildAndRun p +[] +let ``lazy test`` p = singleTestBuildAndRun p - [] - let ``letrec (mutrec variations part two)`` p = singleTestBuildAndRun p +[] +let letrec p = singleTestBuildAndRun p -module LibTest = +[] +let ``letrec (mutrec variations part one)`` p = singleTestBuildAndRun p - [] - let libtest p = singleTestBuildAndRun p +[] +let ``letrec (mutrec variations part two)`` p = singleTestBuildAndRun p -module Lift = +[] +let libtest p = singleTestBuildAndRun p - [] - let lift p = singleTestBuildAndRun p +[] +let lift p = singleTestBuildAndRun p module ``Load-Script`` = - let ``script > a 2>b`` cfg dir (stdout,stderr) = attempt { + [] + let ``load-script`` () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let stdoutPath = stdout |> Commands.getfullpath dir - let stderrPath = stderr |> Commands.getfullpath dir + // script > out.txt 2>&1 + let stdoutPath = "out.stdout.txt" |> getfullpath cfg + let stderrPath = "out.stderr.txt" |> getfullpath cfg + let stderrBaseline = "out.stderr.bsl" |> getfullpath cfg + let stdoutBaseline = "out.stdout.bsl" |> getfullpath cfg - let alwaysSuccess _ = Success () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = OutputAndError(Append(stdoutPath), Append(stderrPath)); Input = None; } p >> alwaysSuccess - let ``exec <`` l p = Command.exec dir cfg.EnvironmentVariables { Output = OutputAndError(Append(stdoutPath), Append(stderrPath)); Input = Some(RedirectInput(l)) } p >> alwaysSuccess - - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let type_append_tofile from = Commands.type_append_tofile dir from stdoutPath - let echo text = Commands.echo_append_tofile dir text stdoutPath - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let ``fsi <`` = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` l) cfg.FSI flags []) - let fileExists = Commands.fileExists dir >> Option.isSome - let del = Commands.rm dir - let getfullpath = Commands.getfullpath dir + let type_append_tofile from = Commands.type_append_tofile cfg.Directory from stdoutPath + let echo text = Commands.echo_append_tofile cfg.Directory text stdoutPath File.WriteAllText(stdoutPath, "") File.WriteAllText(stderrPath, "") // del 3.exe 2>nul 1>nul - do if fileExists "3.exe" then getfullpath "3.exe" |> File.Delete + do if fileExists cfg "3.exe" then getfullpath cfg "3.exe" |> File.Delete // type 1.fsx 2.fsx 3.fsx ["1.fsx"; "2.fsx"; "3.fsx"] |> List.iter type_append_tofile - // echo Test 1================================================= + echo "Test 1=================================================" // "%FSC%" 3.fsx --nologo - do! fsc "--nologo" ["3.fsx"] + do! fscToOutIgnoreExitCode cfg stdoutPath stderrPath "--nologo" ["3.fsx"] // 3.exe - do! exec ("."/"3.exe") "" + do! execToOutAndIgnoreExitCode cfg stdoutPath stderrPath ("."/"3.exe") "" // del 3.exe - del "3.exe" - // echo Test 2================================================= + rm cfg "3.exe" + echo "Test 2=================================================" // "%FSI%" 3.fsx - do! fsi "" ["3.fsx"] - // echo Test 3================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["3.fsx"] + echo "Test 3=================================================" // "%FSI%" --nologo < pipescr - do! ``fsi <`` "--nologo" "pipescr" + do! fsiFromInToOutIgnoreExitCode cfg stdoutPath stderrPath "--nologo" "pipescr" // echo. - // echo Test 4================================================= + echo "Test 4=================================================" // "%FSI%" usesfsi.fsx - do! fsi "" ["usesfsi.fsx"] - // echo Test 5================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["usesfsi.fsx"] + echo "Test 5=================================================" // "%FSC%" usesfsi.fsx --nologo - do! fsc "--nologo" ["usesfsi.fsx"] - // echo Test 6================================================= + do! fscToOutIgnoreExitCode cfg stdoutPath stderrPath "--nologo" ["usesfsi.fsx"] + echo "Test 6=================================================" // "%FSC%" usesfsi.fsx --nologo -r FSharp.Compiler.Interactive.Settings - do! fsc "--nologo -r FSharp.Compiler.Interactive.Settings" ["usesfsi.fsx"] - // echo Test 7================================================= + do! fscToOutIgnoreExitCode cfg stdoutPath stderrPath "--nologo -r FSharp.Compiler.Interactive.Settings" ["usesfsi.fsx"] + echo "Test 7=================================================" // "%FSI%" 1.fsx 2.fsx 3.fsx - do! fsi "" ["1.fsx";"2.fsx";"3.fsx"] - // echo Test 8================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["1.fsx";"2.fsx";"3.fsx"] + echo "Test 8=================================================" // "%FSI%" 3.fsx 2.fsx 1.fsx - do! fsi "" ["3.fsx";"2.fsx";"1.fsx"] - // echo Test 9================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["3.fsx";"2.fsx";"1.fsx"] + echo "Test 9=================================================" // "%FSI%" multiple-load-1.fsx - do! fsi "" ["multiple-load-1.fsx"] - // echo Test 10================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["multiple-load-1.fsx"] + echo "Test 10=================================================" // "%FSI%" multiple-load-2.fsx - do! fsi "" ["multiple-load-2.fsx"] - // echo Test 11================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["multiple-load-2.fsx"] + echo "Test 11=================================================" // "%FSC%" FlagCheck.fs --nologo - do! fsc "--nologo" ["FlagCheck.fs"] + do! fscToOutIgnoreExitCode cfg stdoutPath stderrPath "--nologo" ["FlagCheck.fs"] // FlagCheck.exe - do! exec ("."/"FlagCheck.exe") "" - // del FlagCheck.exe - del "FlagCheck.exe" - // echo Test 12================================================= + do! execToOutAndIgnoreExitCode cfg stdoutPath stderrPath ("."/"FlagCheck.exe") "" + // rm cfg FlagCheck.exe + rm cfg "FlagCheck.exe" + echo "Test 12=================================================" // "%FSC%" FlagCheck.fsx --nologo - do! fsc "-o FlagCheckScript.exe --nologo" ["FlagCheck.fsx"] + do! fscToOutIgnoreExitCode cfg stdoutPath stderrPath "-o FlagCheckScript.exe --nologo" ["FlagCheck.fsx"] // FlagCheck.exe - do! exec ("."/"FlagCheckScript.exe") "" - // del FlagCheck.exe - del "FlagCheckScript.exe" - // echo Test 13================================================= + do! execToOutAndIgnoreExitCode cfg stdoutPath stderrPath ("."/"FlagCheckScript.exe") "" + // rm cfg FlagCheck.exe + rm cfg "FlagCheckScript.exe" + echo "Test 13=================================================" // "%FSI%" load-FlagCheckFs.fsx - do! fsi "" ["load-FlagCheckFs.fsx"] - // echo Test 14================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["load-FlagCheckFs.fsx"] + echo "Test 14=================================================" // "%FSI%" FlagCheck.fsx - do! fsi "" ["FlagCheck.fsx"] - // echo Test 15================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["FlagCheck.fsx"] + echo "Test 15=================================================" // "%FSI%" ProjectDriver.fsx - do! fsi "" ["ProjectDriver.fsx"] - // echo Test 16================================================= + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["ProjectDriver.fsx"] + echo "Test 16=================================================" // "%FSC%" ProjectDriver.fsx --nologo - do! fsc "--nologo" ["ProjectDriver.fsx"] - // ProjectDriver.exe - do! exec ("."/"ProjectDriver.exe") "" - // del ProjectDriver.exe - del "ProjectDriver.exe" - // echo Test 17================================================= - echo "Test 17=================================================" - // "%FSI%" load-IncludeNoWarn211.fsx - do! fsi "" ["load-IncludeNoWarn211.fsx"] - // echo Done ================================================== - echo "Done ==================================================" - } + do! fscToOutIgnoreExitCode cfg stdoutPath stderrPath "--nologo" ["ProjectDriver.fsx"] - let build cfg dir = attempt { + do! execToOutAndIgnoreExitCode cfg stdoutPath stderrPath ("."/"ProjectDriver.exe") "" - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let getfullpath = Commands.getfullpath dir - - let fsdiff a b = attempt { - let out = new ResizeArray() - let redirectOutputToFile path args = - log "%s %s" path args - use toLog = redirectToLog () - Process.exec { RedirectOutput = Some (function null -> () | s -> out.Add(s)); RedirectError = Some toLog.Post; RedirectInput = None; } dir cfg.EnvironmentVariables path args - do! (Commands.fsdiff redirectOutputToFile cfg.FSDIFF a b) |> (fun _ -> Success ()) - return out.ToArray() |> List.ofArray - } + rm cfg "ProjectDriver.exe" + echo "Test 17=================================================" + // "%FSI%" load-IncludeNoWarn211.fsx + do! fsiToOutIgnoreExitCode cfg stdoutPath stderrPath "" ["load-IncludeNoWarn211.fsx"] - // script > out.txt 2>&1 - do! ``script > a 2>b`` cfg dir ("out.stdout.txt", "out.stderr.txt") + echo "Done ==================================================" // if NOT EXIST out.bsl COPY out.txt ignore "useless, first run, same as use an empty file" @@ -1184,1201 +858,646 @@ module ``Load-Script`` = let normalizePaths f = let text = File.ReadAllText(f) let dummyPath = @"D:\staging\staging\src\tests\fsharp\core\load-script" - let contents = System.Text.RegularExpressions.Regex.Replace(text, System.Text.RegularExpressions.Regex.Escape(dir), dummyPath) + let contents = System.Text.RegularExpressions.Regex.Replace(text, System.Text.RegularExpressions.Regex.Escape(cfg.Directory), dummyPath) File.WriteAllText(f, contents) - normalizePaths (getfullpath "out.stdout.txt") - normalizePaths (getfullpath "out.stderr.txt") + normalizePaths stdoutPath + normalizePaths stderrPath - let! diffs = fsdiff (getfullpath "out.stdout.txt") (getfullpath "out.stdout.bsl") + let! diffs = fsdiff cfg stdoutPath stdoutBaseline do! match diffs with | [] -> Success - | l -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" (getfullpath "out.stdout.txt") (getfullpath "out.stdout.bsl") diffs) + | _ -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" stdoutPath stdoutBaseline diffs) - let! diffs = fsdiff (getfullpath "out.stderr.txt") (getfullpath "out.stderr.bsl") + let! diffs = fsdiff cfg stderrPath stderrBaseline do! match diffs with | [] -> Success - | l -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" (getfullpath "out.stderr.txt") (getfullpath "out.stderr.bsl") diffs) - } - - [] - let ``load-script`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir + | _ -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" stderrPath stderrBaseline diffs) }) -module LongNames = - - [] - let longnames p = singleTestBuildAndRun p - - -module ``test map`` = - - [] - let map p = singleTestBuildAndRun p - -module Math = - //TODO math/lalgebra does not have build.bat/run.bat and #r "FSharp.Math.Providers.dll" - - module Numbers = - - [] - let numbers p = singleTestBuildAndRun p - - - module numbersVS2008 = - - [] - let numbersVS2008 p = singleTestBuildAndRun p - - - -module Measures = +[] +let longnames p = singleTestBuildAndRun p - [] - let measures p = singleTestBuildAndRun p +[] +let map p = singleTestBuildAndRun p -module Members = +[] +let numbers p = singleTestBuildAndRun p - module Basics = +[] +let numbersVS2008 p = singleTestBuildAndRun p - [] - let Basics p = singleTestBuildAndRun p +[] +let measures p = singleTestBuildAndRun p - [] - let BasicsHw p = singleTestBuildAndRun p +[] +let Basics p = singleTestBuildAndRun p - [] - let BasicsHwMutrec p = singleTestBuildAndRun p +[] +let BasicsHw p = singleTestBuildAndRun p - module Ctree = +[] +let BasicsHwMutrec p = singleTestBuildAndRun p - [] - let ctree p = singleTestBuildAndRun p +[] +let ctree p = singleTestBuildAndRun p - module Factors = +[] +let factors p = singleTestBuildAndRun p - [] - let factors p = singleTestBuildAndRun p +[] +let factorsMutrec p = singleTestBuildAndRun p - [] - let factorsMutrec p = singleTestBuildAndRun p +[] +let incremental p = singleTestBuildAndRun p - module Incremental = +[] +let incrementalHw p = singleTestBuildAndRun p - [] - let incremental p = singleTestBuildAndRun p +[] +let incrementalHwMutrec p = singleTestBuildAndRun p - [] - let incrementalHw p = singleTestBuildAndRun p +[] +let ops p = singleTestBuildAndRun p - [] - let incrementalHwMutrec p = singleTestBuildAndRun p +[] +let opsMutrec p = singleTestBuildAndRun p - module Ops = +[] +let nested p = singleTestBuildAndRun p - [] - let ops p = singleTestBuildAndRun p +[] +let ``Run all tests using PCL profie 259 FSHarp.Core``() = check (attempt { + let cfg = FSharpTestSuite.testConfig () - [] - let opsMutrec p = singleTestBuildAndRun p + let envVars = + cfg.EnvironmentVariables + |> Map.add "FSCOREDLLNETCORE259PATH" cfg.FSCOREDLLNETCORE259PATH + let exec p = Command.exec cfg.Directory envVars { Output = Inherit; Input = None; } p >> checkResult + let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) -module Nested = + // "%MSBUILDTOOLSPATH%\msbuild.exe" ..\netcore.sln /p:Configuration=Debug /p:TestProfile=Profile259 /t:Rebuild + do! msbuild "/p:Configuration=Debug /p:TestProfile=Profile259 /t:Rebuild" [".."/"netcore.sln"] - [] - let nested p = singleTestBuildAndRun p + // set CONTROL_FAILURES_LOG=%~dp0..\ConsoleApplication1\bin\Debug\Profile259\control_failures.log + let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath cfg ".."/"ConsoleApplication1"/"bin"/"Debug"/"Profile259"/"control_failures.log") + let exec p = Command.exec cfg.Directory (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult -module NetCore = - - module Netcore259 = - - let build cfg dir = attempt { - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - // exit /b 0 - // ) - do! requireVSUltimate cfg - - let envVars = - cfg.EnvironmentVariables - |> Map.add "FSCOREDLLNETCORE259PATH" cfg.FSCOREDLLNETCORE259PATH - - let exec p = Command.exec dir envVars { Output = Inherit; Input = None; } p >> checkResult - let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) - - // "%MSBUILDTOOLSPATH%\msbuild.exe" ..\netcore.sln /p:Configuration=Debug /p:TestProfile=Profile259 /t:Rebuild - do! msbuild "/p:Configuration=Debug /p:TestProfile=Profile259 /t:Rebuild" [".."/"netcore.sln"] - - } - - let run cfg dir = attempt { - let getfullpath = Commands.getfullpath dir - - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - // exit /b 0 - // ) - do! requireVSUltimate cfg - - // set CONTROL_FAILURES_LOG=%~dp0..\ConsoleApplication1\bin\Debug\Profile259\control_failures.log - let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath ".."/"ConsoleApplication1"/"bin"/"Debug"/"Profile259"/"control_failures.log") - - let exec p = Command.exec dir (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult - - // ..\ConsoleApplication1\bin\Debug\Profile259\PortableTestEntry.exe - do! exec (".."/"ConsoleApplication1"/"bin"/"Debug"/"Profile259"/"PortableTestEntry.exe") "" - - } - - [] - let netcore259 () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + // ..\ConsoleApplication1\bin\Debug\Profile259\PortableTestEntry.exe + do! exec (".."/"ConsoleApplication1"/"bin"/"Debug"/"Profile259"/"PortableTestEntry.exe") "" - }) + }) - module Netcore7 = +[] +let ``Run all tests using PCL profie 7 FSHarp.Core`` () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let build cfg dir = attempt { - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - // exit /b 0 - // ) - do! requireVSUltimate cfg + let envVars = + cfg.EnvironmentVariables + |> Map.add "FSCOREDLLNETCOREPATH" cfg.FSCOREDLLNETCOREPATH - let envVars = - cfg.EnvironmentVariables - |> Map.add "FSCOREDLLNETCOREPATH" cfg.FSCOREDLLNETCOREPATH + let exec p = Command.exec cfg.Directory envVars { Output = Inherit; Input = None; } p >> checkResult + let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) - let exec p = Command.exec dir envVars { Output = Inherit; Input = None; } p >> checkResult - let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) + // "%MSBUILDTOOLSPATH%\msbuild.exe" ..\netcore.sln /p:Configuration=Debug /p:TestProfile=Profile7 /t:Rebuild + do! msbuild "/p:Configuration=Debug /p:TestProfile=Profile7 /t:Rebuild" [".."/"netcore.sln"] - // "%MSBUILDTOOLSPATH%\msbuild.exe" ..\netcore.sln /p:Configuration=Debug /p:TestProfile=Profile7 /t:Rebuild - do! msbuild "/p:Configuration=Debug /p:TestProfile=Profile7 /t:Rebuild" [".."/"netcore.sln"] - } - - let run cfg dir = attempt { - let getfullpath = Commands.getfullpath dir - - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - // exit /b 0 - // ) - do! requireVSUltimate cfg - - // set CONTROL_FAILURES_LOG=%~dp0..\ConsoleApplication1\bin\Debug\profile7\control_failures.log - let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath ".."/"ConsoleApplication1"/"bin"/"Debug"/"profile7"/"control_failures.log") + // set CONTROL_FAILURES_LOG=%~dp0..\ConsoleApplication1\bin\Debug\profile7\control_failures.log + let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath cfg ".."/"ConsoleApplication1"/"bin"/"Debug"/"profile7"/"control_failures.log") - let exec p = Command.exec dir (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult - - // ..\ConsoleApplication1\bin\Debug\profile7\PortableTestEntry.exe - do! exec (".."/"ConsoleApplication1"/"bin"/"Debug"/"profile7"/"PortableTestEntry.exe") "" - } - - [] - let netcore7 () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let exec p = Command.exec cfg.Directory (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult - do! build cfg dir - - do! run cfg dir + // ..\ConsoleApplication1\bin\Debug\profile7\PortableTestEntry.exe + do! exec (".."/"ConsoleApplication1"/"bin"/"Debug"/"profile7"/"PortableTestEntry.exe") "" - }) + }) - module Netcore78 = +[] +let ``Run all tests using PCL profie 78 FSHarp.Core``() = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let build cfg dir = attempt { - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - // exit /b 0 - // ) - do! requireVSUltimate cfg + let envVars = + cfg.EnvironmentVariables + |> Map.add "FSCOREDLLNETCORE78PATH" cfg.FSCOREDLLNETCORE78PATH - let envVars = - cfg.EnvironmentVariables - |> Map.add "FSCOREDLLNETCORE78PATH" cfg.FSCOREDLLNETCORE78PATH + let exec p = Command.exec cfg.Directory envVars { Output = Inherit; Input = None; } p >> checkResult + let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) - let exec p = Command.exec dir envVars { Output = Inherit; Input = None; } p >> checkResult - let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) + // "%MSBUILDTOOLSPATH%\msbuild.exe" ..\netcore.sln /p:Configuration=Debug /p:TestProfile=Profile78 /t:Rebuild + do! msbuild "/p:Configuration=Debug /p:TestProfile=Profile78 /t:Rebuild" [".."/"netcore.sln"] - // "%MSBUILDTOOLSPATH%\msbuild.exe" ..\netcore.sln /p:Configuration=Debug /p:TestProfile=Profile78 /t:Rebuild - do! msbuild "/p:Configuration=Debug /p:TestProfile=Profile78 /t:Rebuild" [".."/"netcore.sln"] - } - - let run cfg dir = attempt { - let getfullpath = Commands.getfullpath dir - - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - // exit /b 0 - // ) - do! requireVSUltimate cfg - - // set CONTROL_FAILURES_LOG=%~dp0..\ConsoleApplication1\bin\Debug\profile78\control_failures.log - let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath ".."/"ConsoleApplication1"/"bin"/"Debug"/"profile78"/"control_failures.log") + // set CONTROL_FAILURES_LOG=%~dp0..\ConsoleApplication1\bin\Debug\profile78\control_failures.log + let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath cfg ".."/"ConsoleApplication1"/"bin"/"Debug"/"profile78"/"control_failures.log") - let exec p = Command.exec dir (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult - - - // ..\ConsoleApplication1\bin\Debug\profile78\PortableTestEntry.exe - do! exec (".."/"ConsoleApplication1"/"bin"/"Debug"/"profile78"/"PortableTestEntry.exe") "" - } - - [] - let netcore78 () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir - - }) - - -module Patterns = - - [] - let patterns p = singleTestBuildAndRun p - -module Pinvoke = - - [] - let pinvoke () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) + let exec p = Command.exec cfg.Directory (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult - // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx - do! fsc "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - - // REM The IL is unverifiable code - // "%PEVERIFY%" /MD test.exe - do! peverify "/MD" "test.exe" + // ..\ConsoleApplication1\bin\Debug\profile78\PortableTestEntry.exe + do! exec (".."/"ConsoleApplication1"/"bin"/"Debug"/"profile78"/"PortableTestEntry.exe") "" - }) - - - -module Portable = - - let build cfg dir = attempt { - let envVars = - cfg.EnvironmentVariables - |> Map.add "FSCOREDLLPORTABLEPATH" cfg.FSCOREDLLPORTABLEPATH + }) - let exec p = Command.exec dir envVars { Output = Inherit; Input = None; } p >> checkResult - let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) +[] +let ``Run all tests using PCL profie 47 FSHarp.Core`` () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! requireVSUltimate cfg - - // "%MSBUILDTOOLSPATH%\msbuild.exe" portablelibrary1.sln /p:Configuration=Debug - do! msbuild "/p:Configuration=Debug" ["portablelibrary1.sln"] + let envVars = + cfg.EnvironmentVariables + |> Map.add "FSCOREDLLPORTABLEPATH" cfg.FSCOREDLLPORTABLEPATH - } + let exec p = Command.exec cfg.Directory envVars { Output = Inherit; Input = None; } p >> checkResult + let msbuild = Printf.ksprintf (Commands.msbuild exec (cfg.MSBUILD.Value)) - let run cfg dir = attempt { - let getfullpath = Commands.getfullpath dir + // "%MSBUILDTOOLSPATH%\msbuild.exe" portablelibrary1.sln /p:Configuration=Debug + do! msbuild "/p:Configuration=Debug" ["portablelibrary1.sln"] - // IF /I "%INSTALL_SKU%" NEQ "ULTIMATE" ( - // echo Test not supported except on Ultimate - // exit /b 0 - // ) - do! requireVSUltimate cfg - - // set CONTROL_FAILURES_LOG=%~dp0\control_failures.log - let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath "control_failures.log") + // set CONTROL_FAILURES_LOG=%~dp0\control_failures.log + let setLog = Map.add "CONTROL_FAILURES_LOG" (getfullpath cfg "control_failures.log") - let exec p = Command.exec dir (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult + let exec p = Command.exec cfg.Directory (cfg.EnvironmentVariables |> setLog) { Output = Inherit; Input = None; } p >> checkResult - // .\ConsoleApplication1\bin\Debug\PortableTestEntry.exe - do! exec ("."/"ConsoleApplication1"/"bin"/"Debug"/"PortableTestEntry.exe") "" - - } - - [] - let portable () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + // .\ConsoleApplication1\bin\Debug\PortableTestEntry.exe + do! exec ("."/"ConsoleApplication1"/"bin"/"Debug"/"PortableTestEntry.exe") "" - }) - - -module ``test printf`` = - let permutations () = [ FSharpSuiteTestCaseData("core/printf", FSC_BASIC) ] - - [] - let printf p = singleTestBuildAndRun p - - -module QueriesLeafExpressionConvert = - - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc_flags = cfg.fsc_flags - - // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx - do! fsc "%s -o:test.exe -g" fsc_flags ["test.fsx"] - - // "%PEVERIFY%" test.exe - do! peverify "test.exe" - - // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx - do! fsc "%s --optimize -o:test--optimize.exe -g" fsc_flags ["test.fsx"] - - // "%PEVERIFY%" test--optimize.exe - do! peverify "test--optimize.exe" - - } - - let run cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create - - // REM fsi.exe testing - // echo TestC - log "TestC" - - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // "%FSI%" %fsi_flags% test.fsx - do! fsi "%s" cfg.fsi_flags ["test.fsx"] - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - - // REM fsc.exe testing - - // echo TestD - log "TestD" - - // if exist test.ok (del /f /q test.ok) - use testOkFile2 = fileguard "test.ok" - // %CLIX% test.exe - do! exec ("."/"test.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile2 |> NUnitConf.checkGuardExists - - - - // if exist test.ok (del /f /q test.ok) - use testOkFile3 = fileguard "test.ok" - // %CLIX% test--optimize.exe - do! exec ("."/"test--optimize.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile3 |> NUnitConf.checkGuardExists + }) - } - [] - let queriesLeafExpressionConvert () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () +[] +let patterns p = singleTestBuildAndRun p - do! build cfg dir +[] +let pinvoke () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - do! run cfg dir + do! fsc cfg "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] + + do! peverifyWithArgs cfg "/nologo /MD" "test.exe" - }) - - -module QueriesNullableOperators = + }) - let build cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let fsc_flags = cfg.fsc_flags +let printfPrmutations () = [ FSharpSuiteTestCaseData("core/printf", FSC_BASIC) ] - // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx - do! fsc "%s -o:test.exe -g" fsc_flags ["test.fsx"] +[] +let printf p = singleTestBuildAndRun p - // "%PEVERIFY%" test.exe - do! peverify "test.exe" - // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx - do! fsc "%s --optimize -o:test--optimize.exe -g" fsc_flags ["test.fsx"] +[] +let queriesLeafExpressionConvert () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%PEVERIFY%" test--optimize.exe - do! peverify "test--optimize.exe" + // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx + do! fsc cfg "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - } + do! peverify cfg "test.exe" - let run cfg dir = attempt { + // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx + do! fsc cfg "%s --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + do! peverify cfg "test--optimize.exe" - // REM fsi.exe testing - // echo TestC - log "TestC" + use testOkFile = fileguard cfg "test.ok" + // "%FSI%" %fsi_flags% test.fsx + do! fsi cfg "%s" cfg.fsi_flags ["test.fsx"] - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // "%FSI%" %fsi_flags% test.fsx - do! fsi "%s" cfg.fsi_flags ["test.fsx"] - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists + do! testOkFile |> NUnitConf.checkGuardExists - // REM fsc.exe testing - // echo TestD - log "TestD" + use testOkFile2 = fileguard cfg "test.ok" - // if exist test.ok (del /f /q test.ok) - use testOkFile2 = fileguard "test.ok" - // %CLIX% test.exe - do! exec ("."/"test.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile2 |> NUnitConf.checkGuardExists - - // if exist test.ok (del /f /q test.ok) - use testOkFile3 = fileguard "test.ok" - // %CLIX% test--optimize.exe - do! exec ("."/"test--optimize.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile3 |> NUnitConf.checkGuardExists - - } + do! exec cfg ("."/"test.exe") "" - [] - let queriesNullableOperators () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + do! testOkFile2 |> NUnitConf.checkGuardExists - do! build cfg dir + use testOkFile3 = fileguard cfg "test.ok" + // test--optimize.exe + do! exec cfg ("."/"test--optimize.exe") "" - do! run cfg dir + do! testOkFile3 |> NUnitConf.checkGuardExists - }) + }) +[] +let queriesNullableOperators () = check (attempt { + let cfg = FSharpTestSuite.testConfig () -module QueriesOverIEnumerable = + // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx + do! fsc cfg "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - let build cfg dir = attempt { + do! peverify cfg "test.exe" - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) + // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx + do! fsc cfg "%s --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] - // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx - do! fsc "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] + do! peverify cfg "test--optimize.exe" - // "%PEVERIFY%" test.exe - do! peverify "test.exe" + use testOkFile = fileguard cfg "test.ok" + do! fsi cfg "%s" cfg.fsi_flags ["test.fsx"] + do! testOkFile |> NUnitConf.checkGuardExists - // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx - do! fsc "%s --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] + use testOkFile2 = fileguard cfg "test.ok" + do! exec cfg ("."/"test.exe") "" + do! testOkFile2 |> NUnitConf.checkGuardExists - // "%PEVERIFY%" test--optimize.exe - do! peverify "test--optimize.exe" + use testOkFile3 = fileguard cfg "test.ok" + do! exec cfg ("."/"test--optimize.exe") "" + do! testOkFile3 |> NUnitConf.checkGuardExists + + }) - } +[] +let queriesOverIEnumerable () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let run cfg dir = attempt { + // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx + do! fsc cfg "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + do! peverify cfg "test.exe" - // REM fsi.exe testing - //echo TestC - log "TestC" + // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx + do! fsc cfg "%s --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // "%FSI%" %fsi_flags% test.fsx - do! fsi "%s" cfg.fsi_flags ["test.fsx"] - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists + do! peverify cfg "test--optimize.exe" + use testOkFile = fileguard cfg "test.ok" + // "%FSI%" %fsi_flags% test.fsx + do! fsi cfg "%s" cfg.fsi_flags ["test.fsx"] - // REM fsc.exe testing - // echo TestD - log "TestD" + do! testOkFile |> NUnitConf.checkGuardExists - // if exist test.ok (del /f /q test.ok) - use testOkFile2 = fileguard "test.ok" - // %CLIX% test.exe - do! exec ("."/"test.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile2 |> NUnitConf.checkGuardExists + use testOkFile2 = fileguard cfg "test.ok" + do! exec cfg ("."/"test.exe") "" - // if exist test.ok (del /f /q test.ok) - use testOkFile3 = fileguard "test.ok" - // %CLIX% test--optimize.exe - do! exec ("."/"test--optimize.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile3 |> NUnitConf.checkGuardExists + do! testOkFile2 |> NUnitConf.checkGuardExists - } - [] - let queriesOverIEnumerable () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - do! build cfg dir + use testOkFile3 = fileguard cfg "test.ok" + // test--optimize.exe + do! exec cfg ("."/"test--optimize.exe") "" - do! run cfg dir + do! testOkFile3 |> NUnitConf.checkGuardExists - }) - - - -module QueriesOverIQueryable = - - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) + }) - // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx - do! fsc "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] +[] +let queriesOverIQueryable () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%PEVERIFY%" test.exe - do! peverify "test.exe" + // "%FSC%" %fsc_flags% -o:test.exe -g test.fsx + do! fsc cfg "%s -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx - do! fsc "%s --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] + do! peverify cfg "test.exe" - // "%PEVERIFY%" test--optimize.exe - do! peverify "test--optimize.exe" + // "%FSC%" %fsc_flags% --optimize -o:test--optimize.exe -g test.fsx + do! fsc cfg "%s --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] - } + do! peverify cfg "test--optimize.exe" - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + use testOkFile = fileguard cfg "test.ok" + // "%FSI%" %fsi_flags% test.fsx + do! fsi cfg "%s" cfg.fsi_flags ["test.fsx"] - // REM fsi.exe testing - // echo TestC - log "TestC" + do! testOkFile |> NUnitConf.checkGuardExists - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // "%FSI%" %fsi_flags% test.fsx - do! fsi "%s" cfg.fsi_flags ["test.fsx"] - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - // REM fsc.exe testing - // echo TestD - log "TestD" + use testOkFile2 = fileguard cfg "test.ok" - // if exist test.ok (del /f /q test.ok) - use testOkFile2 = fileguard "test.ok" - // %CLIX% test.exe - do! exec ("."/"test.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile2 |> NUnitConf.checkGuardExists + do! exec cfg ("."/"test.exe") "" - // if exist test.ok (del /f /q test.ok) - use testOkFile3 = fileguard "test.ok" - // %CLIX% test--optimize.exe - do! exec ("."/"test--optimize.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile3 |> NUnitConf.checkGuardExists + do! testOkFile2 |> NUnitConf.checkGuardExists - } + use testOkFile3 = fileguard cfg "test.ok" + // test--optimize.exe + do! exec cfg ("."/"test--optimize.exe") "" - [] - let queriesOverIQueryable () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + do! testOkFile3 |> NUnitConf.checkGuardExists - }) - + }) -module QuotesDebugInfo = +[] +let quotesDebugInfo () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let build cfg dir = attempt { + // "%FSC%" %fsc_flags% --quotations-debug+ --optimize -o:test.exe -g test.fsx + do! fsc cfg "%s --quotations-debug+ --optimize -o:test.exe -g" cfg.fsc_flags ["test.fsx"] - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) + do! peverify cfg "test.exe" - // "%FSC%" %fsc_flags% --quotations-debug+ --optimize -o:test.exe -g test.fsx - do! fsc "%s --quotations-debug+ --optimize -o:test.exe -g" cfg.fsc_flags ["test.fsx"] + // "%FSC%" %fsc_flags% --quotations-debug+ --optimize -o:test--optimize.exe -g test.fsx + do! fsc cfg "%s --quotations-debug+ --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] - // "%PEVERIFY%" test.exe - do! peverify "test.exe" + do! peverify cfg "test--optimize.exe" - // "%FSC%" %fsc_flags% --quotations-debug+ --optimize -o:test--optimize.exe -g test.fsx - do! fsc "%s --quotations-debug+ --optimize -o:test--optimize.exe -g" cfg.fsc_flags ["test.fsx"] - // "%PEVERIFY%" test--optimize.exe - do! peverify "test--optimize.exe" + use testOkFile = fileguard cfg "test.ok" + // "%FSI%" %fsi_flags% --quotations-debug+ test.fsx + do! fsi cfg "%s --quotations-debug+" cfg.fsi_flags ["test.fsx"] - } + do! testOkFile |> NUnitConf.checkGuardExists - let run cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + use testOkFile2 = fileguard cfg "test.ok" - // REM fsi.exe testing - // echo TestC - log "TestC" + do! exec cfg ("."/"test.exe") "" - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // "%FSI%" %fsi_flags% --quotations-debug+ test.fsx - do! fsi "%s --quotations-debug+" cfg.fsi_flags ["test.fsx"] - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists + do! testOkFile2 |> NUnitConf.checkGuardExists - // REM fsc.exe testing - // echo TestD - log "TestD" - // if exist test.ok (del /f /q test.ok) - use testOkFile2 = fileguard "test.ok" - // %CLIX% test.exe - do! exec ("."/"test.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile2 |> NUnitConf.checkGuardExists + use testOkFile3 = fileguard cfg "test.ok" + // test--optimize.exe + do! exec cfg ("."/"test--optimize.exe") "" - // if exist test.ok (del /f /q test.ok) - use testOkFile3 = fileguard "test.ok" - // %CLIX% test--optimize.exe - do! exec ("."/"test--optimize.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile3 |> NUnitConf.checkGuardExists - - } - - [] - let quotesDebugInfo () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + do! testOkFile3 |> NUnitConf.checkGuardExists - }) - - - -module QuotesInMultipleModules = - - let build cfg dir = attempt { + }) - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" +[] +let quotesInMultipleModules () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%FSC%" %fsc_flags% -o:module1.dll --target:library module1.fsx - do! fsc "%s -o:module1.dll --target:library" cfg.fsc_flags ["module1.fsx"] + // "%FSC%" %fsc_flags% -o:module1.dll --target:library module1.fsx + do! fsc cfg "%s -o:module1.dll --target:library" cfg.fsc_flags ["module1.fsx"] - // "%PEVERIFY%" module1.dll - do! peverify "module1.dll" + do! peverify cfg "module1.dll" - // "%FSC%" %fsc_flags% -o:module2.exe -r:module1.dll module2.fsx - do! fsc "%s -o:module2.exe -r:module1.dll" cfg.fsc_flags ["module2.fsx"] + // "%FSC%" %fsc_flags% -o:module2.exe -r:module1.dll module2.fsx + do! fsc cfg "%s -o:module2.exe -r:module1.dll" cfg.fsc_flags ["module2.fsx"] - // "%PEVERIFY%" module2.exe - do! peverify "module2.exe" + do! peverify cfg "module2.exe" - // "%FSC%" %fsc_flags% --staticlink:module1 -o:module2-staticlink.exe -r:module1.dll module2.fsx - do! fsc "%s --staticlink:module1 -o:module2-staticlink.exe -r:module1.dll" cfg.fsc_flags ["module2.fsx"] + // "%FSC%" %fsc_flags% --staticlink:module1 -o:module2-staticlink.exe -r:module1.dll module2.fsx + do! fsc cfg "%s --staticlink:module1 -o:module2-staticlink.exe -r:module1.dll" cfg.fsc_flags ["module2.fsx"] - // "%PEVERIFY%" module2-staticlink.exe - do! peverify "module2-staticlink.exe" + do! peverify cfg "module2-staticlink.exe" - // "%FSC%" %fsc_flags% -o:module1-opt.dll --target:library --optimize module1.fsx - do! fsc "%s -o:module1-opt.dll --target:library --optimize" cfg.fsc_flags ["module1.fsx"] + // "%FSC%" %fsc_flags% -o:module1-opt.dll --target:library --optimize module1.fsx + do! fsc cfg "%s -o:module1-opt.dll --target:library --optimize" cfg.fsc_flags ["module1.fsx"] - // "%PEVERIFY%" module1-opt.dll - do! peverify "module1-opt.dll" + do! peverify cfg "module1-opt.dll" - // "%FSC%" %fsc_flags% -o:module2-opt.exe -r:module1-opt.dll --optimize module2.fsx - do! fsc "%s -o:module2-opt.exe -r:module1-opt.dll --optimize" cfg.fsc_flags ["module2.fsx"] + // "%FSC%" %fsc_flags% -o:module2-opt.exe -r:module1-opt.dll --optimize module2.fsx + do! fsc cfg "%s -o:module2-opt.exe -r:module1-opt.dll --optimize" cfg.fsc_flags ["module2.fsx"] - // "%PEVERIFY%" module2-opt.exe - do! peverify "module2-opt.exe" + do! peverify cfg "module2-opt.exe" - } - let run cfg dir = attempt { + use testOkFile = fileguard cfg "test.ok" + // "%FSI%" %fsi_flags% -r module1.dll module2.fsx + do! fsi cfg "%s -r module1.dll" cfg.fsi_flags ["module2.fsx"] - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + do! testOkFile |> NUnitConf.checkGuardExists - // REM fsi.exe testing - // echo TestC - log "TestC" - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // "%FSI%" %fsi_flags% -r module1.dll module2.fsx - do! fsi "%s -r module1.dll" cfg.fsi_flags ["module2.fsx"] - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists + use testOkFile = fileguard cfg "test.ok" + // module2.exe + do! exec cfg ("."/"module2.exe") "" - // REM fsc.exe testing - // echo TestD - log "TestD" + do! testOkFile |> NUnitConf.checkGuardExists - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // %CLIX% module2.exe - do! exec ("."/"module2.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // %CLIX% module2-opt.exe - do! exec ("."/"module2-opt.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists + use testOkFile = fileguard cfg "test.ok" + // module2-opt.exe + do! exec cfg ("."/"module2-opt.exe") "" - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - // %CLIX% module2-staticlink.exe - do! exec ("."/"module2-staticlink.exe") "" - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists + do! testOkFile |> NUnitConf.checkGuardExists - } - - [] - let quotesInMultipleModules () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - do! build cfg dir + use testOkFile = fileguard cfg "test.ok" + // module2-staticlink.exe + do! exec cfg ("."/"module2-staticlink.exe") "" - do! run cfg dir + do! testOkFile |> NUnitConf.checkGuardExists - }) - - - - -module Reflect = - - [] - let reflect p = singleTestBuildAndRun p - - -module ``test resources`` = - - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let resgen = Printf.ksprintf (Commands.resgen exec cfg.RESGEN) - - // REM Note that you have a VS SDK dependence here. - // "%RESGEN%" /compile Resources.resx - do! resgen "/compile" ["Resources.resx"] - - // "%FSC%" %fsc_flags% --resource:Resources.resources -o:test-embed.exe -g test.fs - do! fsc "%s --resource:Resources.resources -o:test-embed.exe -g" cfg.fsc_flags ["test.fs"] - - // "%PEVERIFY%" test-embed.exe - do! peverify "test-embed.exe" - - // "%FSC%" %fsc_flags% --linkresource:Resources.resources -o:test-link.exe -g test.fs - do! fsc "%s --linkresource:Resources.resources -o:test-link.exe -g" cfg.fsc_flags ["test.fs"] + }) - // "%PEVERIFY%" test-link.exe - do! peverify "test-link.exe" +[] +let reflect p = singleTestBuildAndRun p - // "%FSC%" %fsc_flags% --resource:Resources.resources,ResourceName.resources -o:test-embed-named.exe -g test.fs - do! fsc "%s --resource:Resources.resources,ResourceName.resources -o:test-embed-named.exe -g" cfg.fsc_flags ["test.fs"] +[] +let testResources () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%PEVERIFY%" test-embed-named.exe - do! peverify "test-embed-named.exe" + // REM Note that you have a VS SDK dependence here. + // "%RESGEN%" /compile Resources.resx + do! resgen cfg "/compile" ["Resources.resx"] - // "%FSC%" %fsc_flags% --linkresource:Resources.resources,ResourceName.resources -o:test-link-named.exe -g test.fs - do! fsc "%s --linkresource:Resources.resources,ResourceName.resources -o:test-link-named.exe -g" cfg.fsc_flags ["test.fs"] + // "%FSC%" %fsc_flags% --resource:Resources.resources -o:test-embed.exe -g test.fs + do! fsc cfg "%s --resource:Resources.resources -o:test-embed.exe -g" cfg.fsc_flags ["test.fs"] - // "%PEVERIFY%" test-link-named.exe - do! peverify "test-link-named.exe" + do! peverify cfg "test-embed.exe" - } + // "%FSC%" %fsc_flags% --linkresource:Resources.resources -o:test-link.exe -g test.fs + do! fsc cfg "%s --linkresource:Resources.resources -o:test-link.exe -g" cfg.fsc_flags ["test.fs"] - let run cfg dir = attempt { + do! peverify cfg "test-link.exe" - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult + // "%FSC%" %fsc_flags% --resource:Resources.resources,ResourceName.resources -o:test-embed-named.exe -g test.fs + do! fsc cfg "%s --resource:Resources.resources,ResourceName.resources -o:test-embed-named.exe -g" cfg.fsc_flags ["test.fs"] - // %CLIX% .\test-embed.exe - do! exec ("."/"test-embed.exe") "" + do! peverify cfg "test-embed-named.exe" - // %CLIX% .\test-link.exe - do! exec ("."/"test-link.exe") "" + // "%FSC%" %fsc_flags% --linkresource:Resources.resources,ResourceName.resources -o:test-link-named.exe -g test.fs + do! fsc cfg "%s --linkresource:Resources.resources,ResourceName.resources -o:test-link-named.exe -g" cfg.fsc_flags ["test.fs"] - // %CLIX% .\test-link-named.exe ResourceName - do! exec ("."/"test-link-named.exe") "ResourceName" + do! peverify cfg "test-link-named.exe" - // %CLIX% .\test-embed-named.exe ResourceName - do! exec ("."/"test-embed-named.exe") "ResourceName" + do! exec cfg ("."/"test-embed.exe") "" - } + do! exec cfg ("."/"test-link.exe") "" - [] - let resources () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + do! exec cfg ("."/"test-link-named.exe") "ResourceName" - do! build cfg dir + do! exec cfg ("."/"test-embed-named.exe") "ResourceName" - do! run cfg dir - }) - - -module ``test seq`` = - - [] - let seq p = singleTestBuildAndRun p - - -module Subtype = - - [] - let subtype p = singleTestBuildAndRun p - - -module Syntax = - - [] - let syntax p = singleTestBuildAndRun p - - - -module Tlr = - - [] - let tlr p = singleTestBuildAndRun p - - -module Topinit = - - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let fsc_flags = cfg.fsc_flags - - - // "%FSC%" %fsc_flags% --optimize -o both69514.exe -g lib69514.fs app69514.fs - do! fsc "%s --optimize -o both69514.exe -g" fsc_flags ["lib69514.fs"; "app69514.fs"] - - // "%PEVERIFY%" both69514.exe - do! peverify "both69514.exe" - - // "%FSC%" %fsc_flags% --optimize- -o both69514-noopt.exe -g lib69514.fs app69514.fs - do! fsc "%s --optimize- -o both69514-noopt.exe -g" fsc_flags ["lib69514.fs"; "app69514.fs"] - - // "%PEVERIFY%" both69514-noopt.exe - do! peverify "both69514-noopt.exe" - - - // "%FSC%" %fsc_flags% --optimize -a -g lib69514.fs - do! fsc "%s --optimize -a -g" fsc_flags ["lib69514.fs"] - - // "%PEVERIFY%" lib69514.dll - do! peverify "lib69514.dll" - - // "%FSC%" %fsc_flags% --optimize -r:lib69514.dll -g app69514.fs - do! fsc "%s --optimize -r:lib69514.dll -g" fsc_flags ["app69514.fs"] + }) - // "%PEVERIFY%" app69514.exe - do! peverify "app69514.exe" - // "%FSC%" %fsc_flags% --optimize- -o:lib69514-noopt.dll -a -g lib69514.fs - do! fsc "%s --optimize- -o:lib69514-noopt.dll -a -g" fsc_flags ["lib69514.fs"] +[] +let seq p = singleTestBuildAndRun p - // "%PEVERIFY%" lib69514-noopt.dll - do! peverify "lib69514-noopt.dll" +[] +let subtype p = singleTestBuildAndRun p - // "%FSC%" %fsc_flags% --optimize- -r:lib69514-noopt.dll -o:app69514-noopt.exe -g app69514.fs - do! fsc "%s --optimize- -r:lib69514-noopt.dll -o:app69514-noopt.exe -g" fsc_flags ["app69514.fs"] +[] +let syntax p = singleTestBuildAndRun p - // "%PEVERIFY%" app69514-noopt.exe - do! peverify "app69514-noopt.exe" +[] +let tlr p = singleTestBuildAndRun p +[] +let topinit () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%FSC%" %fsc_flags% --optimize- -o:lib69514-noopt-withsig.dll -a -g lib69514.fsi lib69514.fs - do! fsc "%s --optimize- -o:lib69514-noopt-withsig.dll -a -g" fsc_flags ["lib69514.fsi"; "lib69514.fs"] + do! fsc cfg "%s --optimize -o both69514.exe -g" cfg.fsc_flags ["lib69514.fs"; "app69514.fs"] - // "%PEVERIFY%" lib69514-noopt-withsig.dll - do! peverify "lib69514-noopt-withsig.dll" + do! peverify cfg "both69514.exe" - // "%FSC%" %fsc_flags% --optimize- -r:lib69514-noopt-withsig.dll -o:app69514-noopt-withsig.exe -g app69514.fs - do! fsc "%s --optimize- -r:lib69514-noopt-withsig.dll -o:app69514-noopt-withsig.exe -g" fsc_flags ["app69514.fs"] + do! fsc cfg "%s --optimize- -o both69514-noopt.exe -g" cfg.fsc_flags ["lib69514.fs"; "app69514.fs"] - // "%PEVERIFY%" app69514-noopt-withsig.exe - do! peverify "app69514-noopt-withsig.exe" + do! peverify cfg "both69514-noopt.exe" - // "%FSC%" %fsc_flags% -o:lib69514-withsig.dll -a -g lib69514.fsi lib69514.fs - do! fsc "%s -o:lib69514-withsig.dll -a -g" fsc_flags ["lib69514.fsi"; "lib69514.fs"] + do! fsc cfg "%s --optimize -a -g" cfg.fsc_flags ["lib69514.fs"] - // "%PEVERIFY%" lib69514-withsig.dll - do! peverify "lib69514-withsig.dll" + do! peverify cfg "lib69514.dll" - // "%FSC%" %fsc_flags% -r:lib69514-withsig.dll -o:app69514-withsig.exe -g app69514.fs - do! fsc "%s -r:lib69514-withsig.dll -o:app69514-withsig.exe -g" fsc_flags ["app69514.fs"] + do! fsc cfg "%s --optimize -r:lib69514.dll -g" cfg.fsc_flags ["app69514.fs"] - // "%PEVERIFY%" app69514-withsig.exe - do! peverify "app69514-withsig.exe" + do! peverify cfg "app69514.exe" + do! fsc cfg "%s --optimize- -o:lib69514-noopt.dll -a -g" cfg.fsc_flags ["lib69514.fs"] - // "%FSC%" %fsc_flags% -o:lib.dll -a -g lib.ml - do! fsc "%s -o:lib.dll -a -g" fsc_flags ["lib.ml"] + do! peverify cfg "lib69514-noopt.dll" - // "%PEVERIFY%" lib.dll - do! peverify "lib.dll" + do! fsc cfg "%s --optimize- -r:lib69514-noopt.dll -o:app69514-noopt.exe -g" cfg.fsc_flags ["app69514.fs"] - // %CSC% /nologo /r:"%FSCOREDLLPATH%" /r:lib.dll /out:test.exe test.cs - do! csc """/nologo /r:"%s" /r:lib.dll /out:test.exe """ cfg.FSCOREDLLPATH ["test.cs"] + do! peverify cfg "app69514-noopt.exe" - // "%FSC%" %fsc_flags% --optimize -o:lib--optimize.dll -a -g lib.ml - do! fsc "%s --optimize -o:lib--optimize.dll -a -g" fsc_flags ["lib.ml"] + do! fsc cfg "%s --optimize- -o:lib69514-noopt-withsig.dll -a -g" cfg.fsc_flags ["lib69514.fsi"; "lib69514.fs"] - // "%PEVERIFY%" lib--optimize.dll - do! peverify "lib--optimize.dll" + do! peverify cfg "lib69514-noopt-withsig.dll" - // %CSC% /nologo /r:"%FSCOREDLLPATH%" /r:lib--optimize.dll /out:test--optimize.exe test.cs - do! csc """/nologo /r:"%s" /r:lib--optimize.dll /out:test--optimize.exe""" cfg.FSCOREDLLPATH ["test.cs"] + do! fsc cfg "%s --optimize- -r:lib69514-noopt-withsig.dll -o:app69514-noopt-withsig.exe -g" cfg.fsc_flags ["app69514.fs"] - // set dicases= flag_deterministic_init1.fs lib_deterministic_init1.fs flag_deterministic_init2.fs lib_deterministic_init2.fs flag_deterministic_init3.fs lib_deterministic_init3.fs flag_deterministic_init4.fs lib_deterministic_init4.fs flag_deterministic_init5.fs lib_deterministic_init5.fs flag_deterministic_init6.fs lib_deterministic_init6.fs flag_deterministic_init7.fs lib_deterministic_init7.fs flag_deterministic_init8.fs lib_deterministic_init8.fs flag_deterministic_init9.fs lib_deterministic_init9.fs flag_deterministic_init10.fs lib_deterministic_init10.fs flag_deterministic_init11.fs lib_deterministic_init11.fs flag_deterministic_init12.fs lib_deterministic_init12.fs flag_deterministic_init13.fs lib_deterministic_init13.fs flag_deterministic_init14.fs lib_deterministic_init14.fs flag_deterministic_init15.fs lib_deterministic_init15.fs flag_deterministic_init16.fs lib_deterministic_init16.fs flag_deterministic_init17.fs lib_deterministic_init17.fs flag_deterministic_init18.fs lib_deterministic_init18.fs flag_deterministic_init19.fs lib_deterministic_init19.fs flag_deterministic_init20.fs lib_deterministic_init20.fs flag_deterministic_init21.fs lib_deterministic_init21.fs flag_deterministic_init22.fs lib_deterministic_init22.fs flag_deterministic_init23.fs lib_deterministic_init23.fs flag_deterministic_init24.fs lib_deterministic_init24.fs flag_deterministic_init25.fs lib_deterministic_init25.fs flag_deterministic_init26.fs lib_deterministic_init26.fs flag_deterministic_init27.fs lib_deterministic_init27.fs flag_deterministic_init28.fs lib_deterministic_init28.fs flag_deterministic_init29.fs lib_deterministic_init29.fs flag_deterministic_init30.fs lib_deterministic_init30.fs flag_deterministic_init31.fs lib_deterministic_init31.fs flag_deterministic_init32.fs lib_deterministic_init32.fs flag_deterministic_init33.fs lib_deterministic_init33.fs flag_deterministic_init34.fs lib_deterministic_init34.fs flag_deterministic_init35.fs lib_deterministic_init35.fs flag_deterministic_init36.fs lib_deterministic_init36.fs flag_deterministic_init37.fs lib_deterministic_init37.fs flag_deterministic_init38.fs lib_deterministic_init38.fs flag_deterministic_init39.fs lib_deterministic_init39.fs flag_deterministic_init40.fs lib_deterministic_init40.fs flag_deterministic_init41.fs lib_deterministic_init41.fs flag_deterministic_init42.fs lib_deterministic_init42.fs flag_deterministic_init43.fs lib_deterministic_init43.fs flag_deterministic_init44.fs lib_deterministic_init44.fs flag_deterministic_init45.fs lib_deterministic_init45.fs flag_deterministic_init46.fs lib_deterministic_init46.fs flag_deterministic_init47.fs lib_deterministic_init47.fs flag_deterministic_init48.fs lib_deterministic_init48.fs flag_deterministic_init49.fs lib_deterministic_init49.fs flag_deterministic_init50.fs lib_deterministic_init50.fs flag_deterministic_init51.fs lib_deterministic_init51.fs flag_deterministic_init52.fs lib_deterministic_init52.fs flag_deterministic_init53.fs lib_deterministic_init53.fs flag_deterministic_init54.fs lib_deterministic_init54.fs flag_deterministic_init55.fs lib_deterministic_init55.fs flag_deterministic_init56.fs lib_deterministic_init56.fs flag_deterministic_init57.fs lib_deterministic_init57.fs flag_deterministic_init58.fs lib_deterministic_init58.fs flag_deterministic_init59.fs lib_deterministic_init59.fs flag_deterministic_init60.fs lib_deterministic_init60.fs flag_deterministic_init61.fs lib_deterministic_init61.fs flag_deterministic_init62.fs lib_deterministic_init62.fs flag_deterministic_init63.fs lib_deterministic_init63.fs flag_deterministic_init64.fs lib_deterministic_init64.fs flag_deterministic_init65.fs lib_deterministic_init65.fs flag_deterministic_init66.fs lib_deterministic_init66.fs flag_deterministic_init67.fs lib_deterministic_init67.fs flag_deterministic_init68.fs lib_deterministic_init68.fs flag_deterministic_init69.fs lib_deterministic_init69.fs flag_deterministic_init70.fs lib_deterministic_init70.fs flag_deterministic_init71.fs lib_deterministic_init71.fs flag_deterministic_init72.fs lib_deterministic_init72.fs flag_deterministic_init73.fs lib_deterministic_init73.fs flag_deterministic_init74.fs lib_deterministic_init74.fs flag_deterministic_init75.fs lib_deterministic_init75.fs flag_deterministic_init76.fs lib_deterministic_init76.fs flag_deterministic_init77.fs lib_deterministic_init77.fs flag_deterministic_init78.fs lib_deterministic_init78.fs flag_deterministic_init79.fs lib_deterministic_init79.fs flag_deterministic_init80.fs lib_deterministic_init80.fs flag_deterministic_init81.fs lib_deterministic_init81.fs flag_deterministic_init82.fs lib_deterministic_init82.fs flag_deterministic_init83.fs lib_deterministic_init83.fs flag_deterministic_init84.fs lib_deterministic_init84.fs flag_deterministic_init85.fs lib_deterministic_init85.fs - let dicases = ["flag_deterministic_init1.fs"; "lib_deterministic_init1.fs"; "flag_deterministic_init2.fs"; "lib_deterministic_init2.fs"; "flag_deterministic_init3.fs"; "lib_deterministic_init3.fs"; "flag_deterministic_init4.fs"; "lib_deterministic_init4.fs"; "flag_deterministic_init5.fs"; "lib_deterministic_init5.fs"; "flag_deterministic_init6.fs"; "lib_deterministic_init6.fs"; "flag_deterministic_init7.fs"; "lib_deterministic_init7.fs"; "flag_deterministic_init8.fs"; "lib_deterministic_init8.fs"; "flag_deterministic_init9.fs"; "lib_deterministic_init9.fs"; "flag_deterministic_init10.fs"; "lib_deterministic_init10.fs"; "flag_deterministic_init11.fs"; "lib_deterministic_init11.fs"; "flag_deterministic_init12.fs"; "lib_deterministic_init12.fs"; "flag_deterministic_init13.fs"; "lib_deterministic_init13.fs"; "flag_deterministic_init14.fs"; "lib_deterministic_init14.fs"; "flag_deterministic_init15.fs"; "lib_deterministic_init15.fs"; "flag_deterministic_init16.fs"; "lib_deterministic_init16.fs"; "flag_deterministic_init17.fs"; "lib_deterministic_init17.fs"; "flag_deterministic_init18.fs"; "lib_deterministic_init18.fs"; "flag_deterministic_init19.fs"; "lib_deterministic_init19.fs"; "flag_deterministic_init20.fs"; "lib_deterministic_init20.fs"; "flag_deterministic_init21.fs"; "lib_deterministic_init21.fs"; "flag_deterministic_init22.fs"; "lib_deterministic_init22.fs"; "flag_deterministic_init23.fs"; "lib_deterministic_init23.fs"; "flag_deterministic_init24.fs"; "lib_deterministic_init24.fs"; "flag_deterministic_init25.fs"; "lib_deterministic_init25.fs"; "flag_deterministic_init26.fs"; "lib_deterministic_init26.fs"; "flag_deterministic_init27.fs"; "lib_deterministic_init27.fs"; "flag_deterministic_init28.fs"; "lib_deterministic_init28.fs"; "flag_deterministic_init29.fs"; "lib_deterministic_init29.fs"; "flag_deterministic_init30.fs"; "lib_deterministic_init30.fs"; "flag_deterministic_init31.fs"; "lib_deterministic_init31.fs"; "flag_deterministic_init32.fs"; "lib_deterministic_init32.fs"; "flag_deterministic_init33.fs"; "lib_deterministic_init33.fs"; "flag_deterministic_init34.fs"; "lib_deterministic_init34.fs"; "flag_deterministic_init35.fs"; "lib_deterministic_init35.fs"; "flag_deterministic_init36.fs"; "lib_deterministic_init36.fs"; "flag_deterministic_init37.fs"; "lib_deterministic_init37.fs"; "flag_deterministic_init38.fs"; "lib_deterministic_init38.fs"; "flag_deterministic_init39.fs"; "lib_deterministic_init39.fs"; "flag_deterministic_init40.fs"; "lib_deterministic_init40.fs"; "flag_deterministic_init41.fs"; "lib_deterministic_init41.fs"; "flag_deterministic_init42.fs"; "lib_deterministic_init42.fs"; "flag_deterministic_init43.fs"; "lib_deterministic_init43.fs"; "flag_deterministic_init44.fs"; "lib_deterministic_init44.fs"; "flag_deterministic_init45.fs"; "lib_deterministic_init45.fs"; "flag_deterministic_init46.fs"; "lib_deterministic_init46.fs"; "flag_deterministic_init47.fs"; "lib_deterministic_init47.fs"; "flag_deterministic_init48.fs"; "lib_deterministic_init48.fs"; "flag_deterministic_init49.fs"; "lib_deterministic_init49.fs"; "flag_deterministic_init50.fs"; "lib_deterministic_init50.fs"; "flag_deterministic_init51.fs"; "lib_deterministic_init51.fs"; "flag_deterministic_init52.fs"; "lib_deterministic_init52.fs"; "flag_deterministic_init53.fs"; "lib_deterministic_init53.fs"; "flag_deterministic_init54.fs"; "lib_deterministic_init54.fs"; "flag_deterministic_init55.fs"; "lib_deterministic_init55.fs"; "flag_deterministic_init56.fs"; "lib_deterministic_init56.fs"; "flag_deterministic_init57.fs"; "lib_deterministic_init57.fs"; "flag_deterministic_init58.fs"; "lib_deterministic_init58.fs"; "flag_deterministic_init59.fs"; "lib_deterministic_init59.fs"; "flag_deterministic_init60.fs"; "lib_deterministic_init60.fs"; "flag_deterministic_init61.fs"; "lib_deterministic_init61.fs"; "flag_deterministic_init62.fs"; "lib_deterministic_init62.fs"; "flag_deterministic_init63.fs"; "lib_deterministic_init63.fs"; "flag_deterministic_init64.fs"; "lib_deterministic_init64.fs"; "flag_deterministic_init65.fs"; "lib_deterministic_init65.fs"; "flag_deterministic_init66.fs"; "lib_deterministic_init66.fs"; "flag_deterministic_init67.fs"; "lib_deterministic_init67.fs"; "flag_deterministic_init68.fs"; "lib_deterministic_init68.fs"; "flag_deterministic_init69.fs"; "lib_deterministic_init69.fs"; "flag_deterministic_init70.fs"; "lib_deterministic_init70.fs"; "flag_deterministic_init71.fs"; "lib_deterministic_init71.fs"; "flag_deterministic_init72.fs"; "lib_deterministic_init72.fs"; "flag_deterministic_init73.fs"; "lib_deterministic_init73.fs"; "flag_deterministic_init74.fs"; "lib_deterministic_init74.fs"; "flag_deterministic_init75.fs"; "lib_deterministic_init75.fs"; "flag_deterministic_init76.fs"; "lib_deterministic_init76.fs"; "flag_deterministic_init77.fs"; "lib_deterministic_init77.fs"; "flag_deterministic_init78.fs"; "lib_deterministic_init78.fs"; "flag_deterministic_init79.fs"; "lib_deterministic_init79.fs"; "flag_deterministic_init80.fs"; "lib_deterministic_init80.fs"; "flag_deterministic_init81.fs"; "lib_deterministic_init81.fs"; "flag_deterministic_init82.fs"; "lib_deterministic_init82.fs"; "flag_deterministic_init83.fs"; "lib_deterministic_init83.fs"; "flag_deterministic_init84.fs"; "lib_deterministic_init84.fs"; "flag_deterministic_init85.fs"; "lib_deterministic_init85.fs"] + do! peverify cfg "app69514-noopt-withsig.exe" - // "%FSC%" %fsc_flags% --optimize- -o test_deterministic_init.exe %dicases% test_deterministic_init.fs - do! fsc "%s --optimize- -o test_deterministic_init.exe" fsc_flags (dicases @ ["test_deterministic_init.fs"]) + do! fsc cfg "%s -o:lib69514-withsig.dll -a -g" cfg.fsc_flags ["lib69514.fsi"; "lib69514.fs"] - // "%PEVERIFY%" test_deterministic_init.exe - do! peverify "test_deterministic_init.exe" + do! peverify cfg "lib69514-withsig.dll" - // "%FSC%" %fsc_flags% --optimize -o test_deterministic_init--optimize.exe %dicases% test_deterministic_init.fs - do! fsc "%s --optimize -o test_deterministic_init--optimize.exe" fsc_flags (dicases @ ["test_deterministic_init.fs"]) + do! fsc cfg "%s -r:lib69514-withsig.dll -o:app69514-withsig.exe -g" cfg.fsc_flags ["app69514.fs"] - // "%PEVERIFY%" test_deterministic_init--optimize.exe - do! peverify "test_deterministic_init--optimize.exe" + do! peverify cfg "app69514-withsig.exe" + do! fsc cfg "%s -o:lib.dll -a -g" cfg.fsc_flags ["lib.ml"] - // "%FSC%" %fsc_flags% --optimize- -a -o test_deterministic_init_lib.dll %dicases% - do! fsc "%s --optimize- -a -o test_deterministic_init_lib.dll" fsc_flags dicases + do! peverify cfg "lib.dll" - // "%PEVERIFY%" test_deterministic_init_lib.dll - do! peverify "test_deterministic_init_lib.dll" + do! csc cfg """/nologo /r:"%s" /r:lib.dll /out:test.exe """ cfg.FSCOREDLLPATH ["test.cs"] - // "%FSC%" %fsc_flags% --optimize- -r test_deterministic_init_lib.dll -o test_deterministic_init_exe.exe test_deterministic_init.fs - do! fsc "%s --optimize- -r test_deterministic_init_lib.dll -o test_deterministic_init_exe.exe" fsc_flags ["test_deterministic_init.fs"] + do! fsc cfg "%s --optimize -o:lib--optimize.dll -a -g" cfg.fsc_flags ["lib.ml"] - // "%PEVERIFY%" test_deterministic_init_exe.exe - do! peverify "test_deterministic_init_exe.exe" + do! peverify cfg "lib--optimize.dll" - // "%FSC%" %fsc_flags% --optimize -a -o test_deterministic_init_lib--optimize.dll %dicases% - do! fsc "%s --optimize -a -o test_deterministic_init_lib--optimize.dll" fsc_flags dicases + do! csc cfg """/nologo /r:"%s" /r:lib--optimize.dll /out:test--optimize.exe""" cfg.FSCOREDLLPATH ["test.cs"] - // "%PEVERIFY%" test_deterministic_init_lib--optimize.dll - do! peverify "test_deterministic_init_lib--optimize.dll" + let dicases = ["flag_deterministic_init1.fs"; "lib_deterministic_init1.fs"; "flag_deterministic_init2.fs"; "lib_deterministic_init2.fs"; "flag_deterministic_init3.fs"; "lib_deterministic_init3.fs"; "flag_deterministic_init4.fs"; "lib_deterministic_init4.fs"; "flag_deterministic_init5.fs"; "lib_deterministic_init5.fs"; "flag_deterministic_init6.fs"; "lib_deterministic_init6.fs"; "flag_deterministic_init7.fs"; "lib_deterministic_init7.fs"; "flag_deterministic_init8.fs"; "lib_deterministic_init8.fs"; "flag_deterministic_init9.fs"; "lib_deterministic_init9.fs"; "flag_deterministic_init10.fs"; "lib_deterministic_init10.fs"; "flag_deterministic_init11.fs"; "lib_deterministic_init11.fs"; "flag_deterministic_init12.fs"; "lib_deterministic_init12.fs"; "flag_deterministic_init13.fs"; "lib_deterministic_init13.fs"; "flag_deterministic_init14.fs"; "lib_deterministic_init14.fs"; "flag_deterministic_init15.fs"; "lib_deterministic_init15.fs"; "flag_deterministic_init16.fs"; "lib_deterministic_init16.fs"; "flag_deterministic_init17.fs"; "lib_deterministic_init17.fs"; "flag_deterministic_init18.fs"; "lib_deterministic_init18.fs"; "flag_deterministic_init19.fs"; "lib_deterministic_init19.fs"; "flag_deterministic_init20.fs"; "lib_deterministic_init20.fs"; "flag_deterministic_init21.fs"; "lib_deterministic_init21.fs"; "flag_deterministic_init22.fs"; "lib_deterministic_init22.fs"; "flag_deterministic_init23.fs"; "lib_deterministic_init23.fs"; "flag_deterministic_init24.fs"; "lib_deterministic_init24.fs"; "flag_deterministic_init25.fs"; "lib_deterministic_init25.fs"; "flag_deterministic_init26.fs"; "lib_deterministic_init26.fs"; "flag_deterministic_init27.fs"; "lib_deterministic_init27.fs"; "flag_deterministic_init28.fs"; "lib_deterministic_init28.fs"; "flag_deterministic_init29.fs"; "lib_deterministic_init29.fs"; "flag_deterministic_init30.fs"; "lib_deterministic_init30.fs"; "flag_deterministic_init31.fs"; "lib_deterministic_init31.fs"; "flag_deterministic_init32.fs"; "lib_deterministic_init32.fs"; "flag_deterministic_init33.fs"; "lib_deterministic_init33.fs"; "flag_deterministic_init34.fs"; "lib_deterministic_init34.fs"; "flag_deterministic_init35.fs"; "lib_deterministic_init35.fs"; "flag_deterministic_init36.fs"; "lib_deterministic_init36.fs"; "flag_deterministic_init37.fs"; "lib_deterministic_init37.fs"; "flag_deterministic_init38.fs"; "lib_deterministic_init38.fs"; "flag_deterministic_init39.fs"; "lib_deterministic_init39.fs"; "flag_deterministic_init40.fs"; "lib_deterministic_init40.fs"; "flag_deterministic_init41.fs"; "lib_deterministic_init41.fs"; "flag_deterministic_init42.fs"; "lib_deterministic_init42.fs"; "flag_deterministic_init43.fs"; "lib_deterministic_init43.fs"; "flag_deterministic_init44.fs"; "lib_deterministic_init44.fs"; "flag_deterministic_init45.fs"; "lib_deterministic_init45.fs"; "flag_deterministic_init46.fs"; "lib_deterministic_init46.fs"; "flag_deterministic_init47.fs"; "lib_deterministic_init47.fs"; "flag_deterministic_init48.fs"; "lib_deterministic_init48.fs"; "flag_deterministic_init49.fs"; "lib_deterministic_init49.fs"; "flag_deterministic_init50.fs"; "lib_deterministic_init50.fs"; "flag_deterministic_init51.fs"; "lib_deterministic_init51.fs"; "flag_deterministic_init52.fs"; "lib_deterministic_init52.fs"; "flag_deterministic_init53.fs"; "lib_deterministic_init53.fs"; "flag_deterministic_init54.fs"; "lib_deterministic_init54.fs"; "flag_deterministic_init55.fs"; "lib_deterministic_init55.fs"; "flag_deterministic_init56.fs"; "lib_deterministic_init56.fs"; "flag_deterministic_init57.fs"; "lib_deterministic_init57.fs"; "flag_deterministic_init58.fs"; "lib_deterministic_init58.fs"; "flag_deterministic_init59.fs"; "lib_deterministic_init59.fs"; "flag_deterministic_init60.fs"; "lib_deterministic_init60.fs"; "flag_deterministic_init61.fs"; "lib_deterministic_init61.fs"; "flag_deterministic_init62.fs"; "lib_deterministic_init62.fs"; "flag_deterministic_init63.fs"; "lib_deterministic_init63.fs"; "flag_deterministic_init64.fs"; "lib_deterministic_init64.fs"; "flag_deterministic_init65.fs"; "lib_deterministic_init65.fs"; "flag_deterministic_init66.fs"; "lib_deterministic_init66.fs"; "flag_deterministic_init67.fs"; "lib_deterministic_init67.fs"; "flag_deterministic_init68.fs"; "lib_deterministic_init68.fs"; "flag_deterministic_init69.fs"; "lib_deterministic_init69.fs"; "flag_deterministic_init70.fs"; "lib_deterministic_init70.fs"; "flag_deterministic_init71.fs"; "lib_deterministic_init71.fs"; "flag_deterministic_init72.fs"; "lib_deterministic_init72.fs"; "flag_deterministic_init73.fs"; "lib_deterministic_init73.fs"; "flag_deterministic_init74.fs"; "lib_deterministic_init74.fs"; "flag_deterministic_init75.fs"; "lib_deterministic_init75.fs"; "flag_deterministic_init76.fs"; "lib_deterministic_init76.fs"; "flag_deterministic_init77.fs"; "lib_deterministic_init77.fs"; "flag_deterministic_init78.fs"; "lib_deterministic_init78.fs"; "flag_deterministic_init79.fs"; "lib_deterministic_init79.fs"; "flag_deterministic_init80.fs"; "lib_deterministic_init80.fs"; "flag_deterministic_init81.fs"; "lib_deterministic_init81.fs"; "flag_deterministic_init82.fs"; "lib_deterministic_init82.fs"; "flag_deterministic_init83.fs"; "lib_deterministic_init83.fs"; "flag_deterministic_init84.fs"; "lib_deterministic_init84.fs"; "flag_deterministic_init85.fs"; "lib_deterministic_init85.fs"] - // "%FSC%" %fsc_flags% --optimize -r test_deterministic_init_lib--optimize.dll -o test_deterministic_init_exe--optimize.exe test_deterministic_init.fs - do! fsc "%s --optimize -r test_deterministic_init_lib--optimize.dll -o test_deterministic_init_exe--optimize.exe" fsc_flags ["test_deterministic_init.fs"] + do! fsc cfg "%s --optimize- -o test_deterministic_init.exe" cfg.fsc_flags (dicases @ ["test_deterministic_init.fs"]) - // "%PEVERIFY%" test_deterministic_init_exe--optimize.exe - do! peverify "test_deterministic_init_exe--optimize.exe" + do! peverify cfg "test_deterministic_init.exe" + do! fsc cfg "%s --optimize -o test_deterministic_init--optimize.exe" cfg.fsc_flags (dicases @ ["test_deterministic_init.fs"]) - // set static_init_cases= test0.fs test1.fs test2.fs test3.fs test4.fs test5.fs test6.fs - let static_init_cases = [ "test0.fs"; "test1.fs"; "test2.fs"; "test3.fs"; "test4.fs"; "test5.fs"; "test6.fs" ] + do! peverify cfg "test_deterministic_init--optimize.exe" - // "%FSC%" %fsc_flags% --optimize- -o test_static_init.exe %static_init_cases% static-main.fs - do! fsc "%s --optimize- -o test_static_init.exe" fsc_flags (static_init_cases @ ["static-main.fs"]) + do! fsc cfg "%s --optimize- -a -o test_deterministic_init_lib.dll" cfg.fsc_flags dicases - // "%PEVERIFY%" test_static_init.exe - do! peverify "test_static_init.exe" + do! peverify cfg "test_deterministic_init_lib.dll" - // "%FSC%" %fsc_flags% --optimize -o test_static_init--optimize.exe %static_init_cases% static-main.fs - do! fsc "%s --optimize -o test_static_init--optimize.exe" fsc_flags (static_init_cases @ [ "static-main.fs" ]) + do! fsc cfg "%s --optimize- -r test_deterministic_init_lib.dll -o test_deterministic_init_exe.exe" cfg.fsc_flags ["test_deterministic_init.fs"] - // "%PEVERIFY%" test_static_init--optimize.exe - do! peverify "test_static_init--optimize.exe" + do! peverify cfg "test_deterministic_init_exe.exe" + do! fsc cfg "%s --optimize -a -o test_deterministic_init_lib--optimize.dll" cfg.fsc_flags dicases - // "%FSC%" %fsc_flags% --optimize- -a -o test_static_init_lib.dll %static_init_cases% - do! fsc "%s --optimize- -a -o test_static_init_lib.dll" fsc_flags static_init_cases + do! peverify cfg "test_deterministic_init_lib--optimize.dll" - // "%PEVERIFY%" test_static_init_lib.dll - do! peverify "test_static_init_lib.dll" + do! fsc cfg "%s --optimize -r test_deterministic_init_lib--optimize.dll -o test_deterministic_init_exe--optimize.exe" cfg.fsc_flags ["test_deterministic_init.fs"] - // "%FSC%" %fsc_flags% --optimize- -r test_static_init_lib.dll -o test_static_init_exe.exe static-main.fs - do! fsc "%s --optimize- -r test_static_init_lib.dll -o test_static_init_exe.exe" fsc_flags ["static-main.fs"] + do! peverify cfg "test_deterministic_init_exe--optimize.exe" - // "%PEVERIFY%" test_static_init_exe.exe - do! peverify "test_static_init_exe.exe" + let static_init_cases = [ "test0.fs"; "test1.fs"; "test2.fs"; "test3.fs"; "test4.fs"; "test5.fs"; "test6.fs" ] - // "%FSC%" %fsc_flags% --optimize -a -o test_static_init_lib--optimize.dll %static_init_cases% - do! fsc "%s --optimize -a -o test_static_init_lib--optimize.dll" fsc_flags static_init_cases + do! fsc cfg "%s --optimize- -o test_static_init.exe" cfg.fsc_flags (static_init_cases @ ["static-main.fs"]) - // "%PEVERIFY%" test_static_init_lib--optimize.dll - do! peverify "test_static_init_lib--optimize.dll" + do! peverify cfg "test_static_init.exe" - // "%FSC%" %fsc_flags% --optimize -r test_static_init_lib--optimize.dll -o test_static_init_exe--optimize.exe static-main.fs - do! fsc "%s --optimize -r test_static_init_lib--optimize.dll -o test_static_init_exe--optimize.exe" fsc_flags ["static-main.fs"] + do! fsc cfg "%s --optimize -o test_static_init--optimize.exe" cfg.fsc_flags (static_init_cases @ [ "static-main.fs" ]) - // "%PEVERIFY%" test_static_init_exe--optimize.exe - do! peverify "test_static_init_exe--optimize.exe" + do! peverify cfg "test_static_init--optimize.exe" - } + do! fsc cfg "%s --optimize- -a -o test_static_init_lib.dll" cfg.fsc_flags static_init_cases - let run cfg dir = attempt { + do! peverify cfg "test_static_init_lib.dll" - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult + do! fsc cfg "%s --optimize- -r test_static_init_lib.dll -o test_static_init_exe.exe" cfg.fsc_flags ["static-main.fs"] - // %CLIX% .\test.exe - do! exec ("."/"test.exe") "" + do! peverify cfg "test_static_init_exe.exe" - // %CLIX% .\test--optimize.exe - do! exec ("."/"test--optimize.exe") "" + do! fsc cfg "%s --optimize -a -o test_static_init_lib--optimize.dll" cfg.fsc_flags static_init_cases - // %CLIX% .\test_deterministic_init.exe - do! exec ("."/"test_deterministic_init.exe") "" + do! peverify cfg "test_static_init_lib--optimize.dll" - // %CLIX% .\test_deterministic_init--optimize.exe - do! exec ("."/"test_deterministic_init--optimize.exe") "" + do! fsc cfg "%s --optimize -r test_static_init_lib--optimize.dll -o test_static_init_exe--optimize.exe" cfg.fsc_flags ["static-main.fs"] - // %CLIX% .\test_deterministic_init_exe.exe - do! exec ("."/"test_deterministic_init_exe.exe") "" + do! peverify cfg "test_static_init_exe--optimize.exe" - // %CLIX% .\test_deterministic_init_exe--optimize.exe - do! exec ("."/"test_deterministic_init_exe--optimize.exe") "" + do! exec cfg ("."/"test.exe") "" + do! exec cfg ("."/"test--optimize.exe") "" - // %CLIX% .\test_static_init.exe - do! exec ("."/"test_static_init.exe") "" + do! exec cfg ("."/"test_deterministic_init.exe") "" - // %CLIX% .\test_static_init--optimize.exe - do! exec ("."/"test_static_init--optimize.exe") "" + do! exec cfg ("."/"test_deterministic_init--optimize.exe") "" - // %CLIX% .\test_static_init_exe.exe - do! exec ("."/"test_static_init_exe.exe") "" + do! exec cfg ("."/"test_deterministic_init_exe.exe") "" - // %CLIX% .\test_static_init_exe--optimize.exe - do! exec ("."/"test_static_init_exe--optimize.exe") "" + do! exec cfg ("."/"test_deterministic_init_exe--optimize.exe") "" + do! exec cfg ("."/"test_static_init.exe") "" - } + do! exec cfg ("."/"test_static_init--optimize.exe") "" - [] - let topinit () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + do! exec cfg ("."/"test_static_init_exe.exe") "" - do! build cfg dir - - do! run cfg dir + do! exec cfg ("."/"test_static_init_exe--optimize.exe") "" - }) - - -module UnitsOfMeasure = - - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - - // "%FSC%" %fsc_flags% --optimize- -o:test.exe -g test.fs - do! fsc "%s --optimize- -o:test.exe -g" cfg.fsc_flags ["test.fs"] - - // "%PEVERIFY%" test.exe - do! peverify "test.exe" - - } + }) - let run cfg dir = attempt { +[] +let unitsOfMeasure () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + do! fsc cfg "%s --optimize- -o:test.exe -g" cfg.fsc_flags ["test.fs"] - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + do! peverify cfg "test.exe" - // %CLIX% .\test.exe - do! exec ("."/"test.exe") "" + use testOkFile = fileguard cfg "test.ok" - do! testOkFile |> NUnitConf.checkGuardExists - } + do! exec cfg ("."/"test.exe") "" - [] - let unitsOfMeasure () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + do! testOkFile |> NUnitConf.checkGuardExists - }) - - - -module Verify = + }) - [] - let verify () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let peverify' = Commands.peverify exec cfg.PEVERIFY - let getfullpath = Commands.getfullpath dir +[] +let verify () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%PEVERIFY%" "%FSCBinPath%\FSharp.Build.dll" - do! peverify (cfg.FSCBinPath/"FSharp.Build.dll") + do! peverifyWithArgs cfg "/nologo" (cfg.FSCBinPath/"FSharp.Build.dll") - // REM Use /MD because this contains some P/Invoke code - // "%PEVERIFY%" /MD "%FSCBinPath%\FSharp.Compiler.dll" - do! peverify' "/MD" (cfg.FSCBinPath/"FSharp.Compiler.dll") + // REM Use /MD because this contains some P/Invoke code + do! peverifyWithArgs cfg "/nologo /MD" (cfg.FSCBinPath/"FSharp.Compiler.dll") - // "%PEVERIFY%" "%FSCBinPath%\fsi.exe" - do! peverify (cfg.FSCBinPath/"fsi.exe") + do! peverifyWithArgs cfg "/nologo" (cfg.FSCBinPath/"fsi.exe") - // "%PEVERIFY%" "%FSCBinPath%\FSharp.Compiler.Interactive.Settings.dll" - do! peverify (cfg.FSCBinPath/"FSharp.Compiler.Interactive.Settings.dll") + do! peverifyWithArgs cfg "/nologo" (cfg.FSCBinPath/"FSharp.Compiler.Interactive.Settings.dll") - // "%FSC%" %fsc_flags% -o:xmlverify.exe -g xmlverify.fs - do! fsc "%s -o:xmlverify.exe -g" cfg.fsc_flags ["xmlverify.fs"] + // "%FSC%" %fsc_flags% -o:xmlverify.exe -g xmlverify.fs + do! fsc cfg "%s -o:xmlverify.exe -g" cfg.fsc_flags ["xmlverify.fs"] - // "%PEVERIFY%" xmlverify.exe - do! peverify "xmlverify.exe" - }) + do! peverifyWithArgs cfg "/nologo" "xmlverify.exe" + }) diff --git a/tests/fsharp/fsc/FileVersionInfo.fs b/tests/fsharp/fsc/FileVersionInfo.fs index 1d4024aeff6..0066c11b954 100644 --- a/tests/fsharp/fsc/FileVersionInfo.fs +++ b/tests/fsharp/fsc/FileVersionInfo.fs @@ -8,7 +8,7 @@ open NUnitConf open PlatformHelpers open FSharpTestSuiteTypes -let testContext = FSharpTestSuite.testContext +let testConfig = FSharpTestSuite.testConfig open System.Reflection @@ -16,7 +16,8 @@ module FileVersionInfoTest = [] let ``should set file version info on generated file`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let fscToLibrary = Printf.ksprintf (FscCommand.fscToLibrary dir (Command.exec dir cfg.EnvironmentVariables) cfg.FSC) @@ -61,7 +62,7 @@ open System.Runtime.InteropServices result.StderrText |> FscCommand.parseFscOut - |> List.choose (function FscCommand.FscOutputLine.Warning(w,e) -> Some w | _ -> None) + |> List.choose (function FscCommand.FscOutputLine.Warning(w,_) -> Some w | _ -> None) |> Assert.areEqual [] }) diff --git a/tests/fsharp/fsc/ProductVersion.fs b/tests/fsharp/fsc/ProductVersion.fs index 20dda10ffb9..1f2b3f83318 100644 --- a/tests/fsharp/fsc/ProductVersion.fs +++ b/tests/fsharp/fsc/ProductVersion.fs @@ -8,7 +8,7 @@ open NUnitConf open PlatformHelpers open FSharpTestSuiteTypes -let testContext = FSharpTestSuite.testContext +let testConfig = FSharpTestSuite.testConfig open System.Reflection @@ -28,7 +28,8 @@ module ProductVersionTest = [] let ``should use correct fallback`` assemblyVersion fileVersion infoVersion expected = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let fscToLibrary = Printf.ksprintf (fun flags -> FscCommand.fscToLibrary dir (Command.exec dir cfg.EnvironmentVariables) cfg.FSC flags) diff --git a/tests/fsharp/fsc/warnings/FS2003/Warning_FS2003.fs b/tests/fsharp/fsc/warnings/FS2003/Warning_FS2003.fs index 5c00ceed403..6257bd54f13 100644 --- a/tests/fsharp/fsc/warnings/FS2003/Warning_FS2003.fs +++ b/tests/fsharp/fsc/warnings/FS2003/Warning_FS2003.fs @@ -8,7 +8,7 @@ open NUnitConf open PlatformHelpers open FSharpTestSuiteTypes -let testContext = FSharpTestSuite.testContext +let testConfig = FSharpTestSuite.testConfig open System.Reflection @@ -16,7 +16,8 @@ module FS2003 = [] let ``should be raised if AssemblyInformationalVersion has invalid version`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let fscToLibrary = Printf.ksprintf (FscCommand.fscToLibrary dir (Command.exec dir cfg.EnvironmentVariables) cfg.FSC) @@ -45,7 +46,7 @@ open System.Reflection let w = result.StderrText |> FscCommand.parseFscOut - |> List.tryFind (function FscCommand.FscOutputLine.Warning ("FS2003", desc) -> true | _ -> false) + |> List.tryFind (function FscCommand.FscOutputLine.Warning ("FS2003", _desc) -> true | _ -> false) match w with | None -> diff --git a/tests/fsharp/nunitConf.fs b/tests/fsharp/nunitConf.fs index a57d158aa5f..92cfe437c5e 100644 --- a/tests/fsharp/nunitConf.fs +++ b/tests/fsharp/nunitConf.fs @@ -4,7 +4,6 @@ open System open System.IO open NUnit.Framework -open UpdateCmd open TestConfig open PlatformHelpers open FSharpTestSuiteTypes @@ -30,27 +29,16 @@ let envVars () = |> Seq.map (fun d -> d.Key :?> string, d.Value :?> string) |> Map.ofSeq -let defaultConfigurationName = +let initializeSuite () = + #if DEBUG - DEBUG + let configurationName = "DEBUG" #else - RELEASE + let configurationName = "RELEASE" #endif -let parseConfigurationName (name: string) = - match name.ToUpper() with - | "RELEASE" -> RELEASE - | "DEBUG" -> DEBUG - | s -> failwithf "invalid env var FSHARP_TEST_SUITE_CONFIGURATION '%s'" s - - -let initializeSuite () = - - let configurationName = defaultConfigurationName - let doNgen = true; - - let FSCBinPath = __SOURCE_DIRECTORY__/".."/".."/(sprintf "%O" configurationName)/"net40"/"bin" + let FSCBinPath = __SOURCE_DIRECTORY__/".."/".."/configurationName/"net40"/"bin" let mapWithDefaults defaults m = Seq.concat [ (Map.toSeq defaults) ; (Map.toSeq m) ] |> Map.ofSeq @@ -59,15 +47,7 @@ let initializeSuite () = envVars () |> mapWithDefaults ( [ "FSCBINPATH", FSCBinPath ] |> Map.ofList ) - let configurationName = - match env |> Map.tryFind "FSHARP_TEST_SUITE_CONFIGURATION" |> Option.map parseConfigurationName with - | Some confName -> confName - | None -> configurationName - attempt { - do! updateCmd env { Configuration = configurationName; Ngen = doNgen; } - |> Attempt.Run - |> function Success () -> Success () | Failure msg -> genericError msg () let cfg = let c = config env @@ -90,28 +70,8 @@ let initializeSuite () = | Some dir -> genericError (sprintf "environment variable 'FSCBinPath' is required to be a valid directory, but is '%s'" dir) } - let smokeTest () = attempt { - let tempFile ext = - let p = Path.ChangeExtension( Path.GetTempFileName(), ext) - File.AppendAllText (p, """printfn "ciao"; exit 0""") - p - - let tempDir = Commands.createTempDir () - let exec exe args = - log "%s %s" exe args - use toLog = redirectToLog () - Process.exec { RedirectError = Some toLog.Post; RedirectOutput = Some toLog.Post; RedirectInput = None } tempDir cfg.EnvironmentVariables exe args - - do! Commands.fsc exec cfg.FSC "" [ tempFile ".fs" ] |> checkResult - - do! Commands.fsi exec cfg.FSI "" [ tempFile ".fsx" ] |> checkResult - - } - do! checkfscBinPath () - do! smokeTest () - return cfg } @@ -130,7 +90,7 @@ type public InitializeSuiteAttribute () = if details.IsSuite then suiteHelpers.Force() |> ignore - override x.AfterTest details = + override x.AfterTest _details = () override x.Targets with get() = ActionTargets.Test ||| ActionTargets.Suite @@ -142,6 +102,8 @@ type public InitializeSuiteAttribute () = module FSharpTestSuite = + /// Get the tags from the first few lines of a file, e.g. the line + /// #Conformance #Constants #Recursion #LetBindings #MemberDefinitions #Mutable let getTagsOfFile path = match File.ReadLines(path) |> Seq.truncate 5 |> Seq.tryFind (fun s -> s.StartsWith("// #")) with | None -> [] @@ -152,6 +114,7 @@ module FSharpTestSuite = |> Seq.distinct |> Seq.toList + /// Get the tags from a directory of files let getTestFileMetadata dir = Directory.EnumerateFiles(dir, "*.fs*") |> Seq.toList @@ -175,6 +138,7 @@ module FSharpTestSuite = parseTestLst ( __SOURCE_DIRECTORY__/".."/"test.lst" ) ) + /// Get the tags from a test.lst file let getTestLstTags db dir = let normalizePath path = Uri(path).LocalPath @@ -182,7 +146,6 @@ module FSharpTestSuite = |> (fun s -> s.ToUpperInvariant()) let sameDir a = (normalizePath dir) = (normalizePath a) - let normalizedPath = normalizePath dir db |> List.choose (fun (tag, d) -> if sameDir d then Some tag else None) @@ -198,10 +161,11 @@ module FSharpTestSuite = props.Set("DIRECTORY", testDir) - let testContext () = + let testConfig () = let test = NUnit.Framework.TestContext.CurrentContext.Test - { Directory = test.Properties.Get("DIRECTORY") :?> string; - Config = suiteHelpers.Value } + let cfg = suiteHelpers.Value + let testDir = test.Properties.Get("DIRECTORY") :?> string + { cfg with Directory = testDir } // parametrized test cases does not inherits properties of test ( see https://github.com/nunit/nunit/issues/548 ) // and properties is where the custom context data is saved @@ -220,25 +184,17 @@ type FSharpSuiteTestAttribute(dir: string) = test.Properties.Set(NUnit.Framework.Internal.PropertyNames.SkipReason, NUnit.Framework.Internal.ExceptionHelper.BuildMessage(ex)) test.Properties.Set(NUnit.Framework.Internal.PropertyNames.ProviderStackTrace, NUnit.Framework.Internal.ExceptionHelper.BuildStackTrace(ex)) -type FSharpSuiteTestCaseData = - inherit TestCaseData - - new (dir: string, [] arguments: Object array) as this = - { inherit TestCaseData(arguments) } - then - this.Properties |> FSharpTestSuite.setProps dir - arguments +type FSharpSuiteTestCaseData (dir: string, [] arguments: Object[]) as this = + inherit TestCaseData(arguments) + do this.Properties |> FSharpTestSuite.setProps dir + arguments |> Array.choose (fun a -> match a with :? Permutation as p -> Some p | _ -> None) |> Array.iter (fun p -> this.SetCategory(sprintf "%A" p) |> ignore) [] -type FSharpSuiteTestCaseAttribute = - inherit TestCaseAttribute - - new (dir: string, [] arguments: Object array) as this = - { inherit TestCaseAttribute(arguments) } - then - this.Properties |> FSharpTestSuite.setProps dir +type FSharpSuiteTestCaseAttribute(dir: string, [] arguments: Object[]) as this = + inherit TestCaseAttribute(arguments) + do this.Properties |> FSharpTestSuite.setProps dir let allPermutations = @@ -349,7 +305,7 @@ and RedirectFrom = module Command = - let logExec dir path args redirect = + let logExec _dir path args redirect = let inF = function | None -> "" @@ -378,7 +334,7 @@ module Command = do! ms.CopyToAsync(writer.BaseStream) |> (Async.AwaitIAsyncResult >> Async.Ignore) do! writer.FlushAsync() |> (Async.AwaitIAsyncResult >> Async.Ignore) with - | :? System.IO.IOException as ex -> //input closed is ok if process is closed + | :? System.IO.IOException -> //input closed is ok if process is closed () } sources |> pipeFile |> Async.RunSynchronously @@ -427,6 +383,49 @@ module Command = { RedirectOutput = None; RedirectError = None; RedirectInput = None } |> (outF (inF exec)) +let alwaysSuccess _ = Success () + +let execToOutAndIgnoreExitCode cfg stdoutPath stderrPath p = Command.exec cfg.Directory cfg.EnvironmentVariables { Output = OutputAndError(Append(stdoutPath), Append(stderrPath)); Input = None; } p >> alwaysSuccess +let exec cfg p = Command.exec cfg.Directory cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult +let execIn cfg workDir p = Command.exec workDir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult + + +let fsc cfg arg = Printf.ksprintf (Commands.fsc (exec cfg) cfg.FSC) arg +let fscIn cfg workDir arg = Printf.ksprintf (Commands.fsc (execIn cfg workDir) cfg.FSC) arg +let fscToOutIgnoreExitCode cfg stdoutPath stderrPath arg = Printf.ksprintf (Commands.fsc (execToOutAndIgnoreExitCode cfg stdoutPath stderrPath) cfg.FSC) arg +let csc cfg arg = Printf.ksprintf (Commands.csc (exec cfg) cfg.CSC) arg +let peverify cfg = Commands.peverify (exec cfg) cfg.PEVERIFY "/nologo" +let peverifyWithArgs cfg args = Commands.peverify (exec cfg) cfg.PEVERIFY args +let fsi cfg = Printf.ksprintf (Commands.fsi (exec cfg) cfg.FSI) +let fsiToOutIgnoreExitCode cfg stdoutPath stderrPath = Printf.ksprintf (Commands.fsi (execToOutAndIgnoreExitCode cfg stdoutPath stderrPath) cfg.FSI) +let fileguard cfg = (Commands.getfullpath cfg.Directory) >> FileGuard.create +let getfullpath cfg = Commands.getfullpath cfg.Directory +let resgen cfg = Printf.ksprintf (Commands.resgen (exec cfg) cfg.RESGEN) +let fileExists cfg = Commands.fileExists cfg.Directory >> Option.isSome +let msbuild cfg = Printf.ksprintf (Commands.msbuild (exec cfg) (cfg.MSBUILD.Value)) +let ``exec <`` cfg l p = Command.exec cfg.Directory cfg.EnvironmentVariables { Output = Inherit; Input = Some(RedirectInput(l)) } p >> checkResult +let ``fsi <`` cfg = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` cfg l) cfg.FSI flags []) +let ``exec < success`` cfg stdoutPath stderrPath l p = Command.exec cfg.Directory cfg.EnvironmentVariables { Output = OutputAndError(Append(stdoutPath), Append(stderrPath)); Input = Some(RedirectInput(l)) } p >> alwaysSuccess +let fsiFromInToOutIgnoreExitCode cfg stdoutPath stderrPath = Printf.ksprintf (fun flags l -> Commands.fsi (``exec < success`` cfg stdoutPath stderrPath l) cfg.FSI flags []) +let rm cfg x = Commands.rm cfg.Directory x +let mkdir cfg = Commands.mkdir_p cfg.Directory + + +let fsdiff cfg a b = attempt { + let out = new ResizeArray() + let redirectOutputToFile path args = + log "%s %s" path args + use toLog = redirectToLog () + Process.exec { RedirectOutput = Some (function null -> () | s -> out.Add(s)); RedirectError = Some toLog.Post; RedirectInput = None; } cfg.Directory cfg.EnvironmentVariables path args + do! (Commands.fsdiff redirectOutputToFile cfg.FSDIFF a b) |> (fun _ -> Success ()) + return out.ToArray() |> List.ofArray + } + +let requireENCulture () = attempt { + do! match System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName with + | "en" -> Success + | c -> skip (sprintf "Test not supported except en Culture, was %s" c) + } [] module CommandTypes = @@ -461,7 +460,7 @@ module FscCommand = match line with | RegexFsc "error" (code, descr) -> FscOutputLine.Error(code, descr) | RegexFsc "warning" (code, descr) -> FscOutputLine.Warning(code, descr) - | l -> FscOutputLine.Text(line) + | _ -> FscOutputLine.Text(line) let parseFscOut = List.map parseFscOutLine diff --git a/tests/fsharp/optimize/tests_optimize.fs b/tests/fsharp/optimize/tests_optimize.fs index 8fedea0df6d..6dca9312bff 100644 --- a/tests/fsharp/optimize/tests_optimize.fs +++ b/tests/fsharp/optimize/tests_optimize.fs @@ -8,7 +8,7 @@ open NUnitConf open PlatformHelpers open FSharpTestSuiteTypes -let testContext = FSharpTestSuite.testContext +let testConfig = FSharpTestSuite.testConfig module Analyses = @@ -30,7 +30,8 @@ module Analyses = [] let functionSizes () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let getfullpath = Commands.getfullpath dir let ``fsc >a 2>&1`` = ``fsc >a 2>&1`` cfg dir @@ -50,13 +51,14 @@ module Analyses = do! match diff with | [] -> Success - | l -> + | _ -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" (getfullpath outFile) (getfullpath expectedFile) diff) }) [] let totalSizes () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let ``fsc >a 2>&1`` = ``fsc >a 2>&1`` cfg dir let fsdiff = fsdiff cfg dir @@ -76,13 +78,14 @@ module Analyses = do! match diff with | [] -> Success - | l -> + | _ -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" (getfullpath outFile) (getfullpath expectedFile) diff) }) [] let hasEffect () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let ``fsc >a 2>&1`` = ``fsc >a 2>&1`` cfg dir let fsdiff = fsdiff cfg dir @@ -102,13 +105,14 @@ module Analyses = do! match diff with | [] -> Success - | l -> + | _ -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" (getfullpath outFile) (getfullpath expectedFile) diff) }) [] let noNeedToTailcall () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let ``fsc >a 2>&1`` = ``fsc >a 2>&1`` cfg dir let fsdiff = fsdiff cfg dir @@ -128,7 +132,7 @@ module Analyses = do! match diff with | [] -> Success - | l -> + | _ -> NUnitConf.genericError (sprintf "'%s' and '%s' differ; %A" (getfullpath outFile) (getfullpath expectedFile) diff) }) @@ -212,7 +216,8 @@ module Inline = [] let ``inline`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory do! build cfg dir @@ -224,7 +229,8 @@ module Stats = [] let stats () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = testConfig () + let dir = cfg.Directory let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult let ildasm = Commands.ildasm exec cfg.ILDASM diff --git a/tests/fsharp/perf/tests_perf.fs b/tests/fsharp/perf/tests_perf.fs index a9d29ef09b1..34937d94aa3 100644 --- a/tests/fsharp/perf/tests_perf.fs +++ b/tests/fsharp/perf/tests_perf.fs @@ -7,29 +7,12 @@ open NUnit.Framework open FSharpTestSuiteTypes open NUnitConf open PlatformHelpers +open SingleTest -let testContext = FSharpTestSuite.testContext +let testConfig = FSharpTestSuite.testConfig +[] +let graph p = singleTestBuildAndRun p -module Graph = - - [] - let graph p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) - - -module Nbody = - - [] - let nbody p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) +[] +let nbody p = singleTestBuildAndRun p diff --git a/tests/fsharp/regression/tests_regression.fs b/tests/fsharp/regression/tests_regression.fs index a68cb384623..b0b1576eed9 100644 --- a/tests/fsharp/regression/tests_regression.fs +++ b/tests/fsharp/regression/tests_regression.fs @@ -7,203 +7,75 @@ open NUnit.Framework open FSharpTestSuiteTypes open NUnitConf open PlatformHelpers +open SingleTest -let testContext = FSharpTestSuite.testContext +[] +let ``26`` p = singleTestBuildAndRun p +[] +let ``321`` p = singleTestBuildAndRun p -module ``26`` = +[] +let ``655`` () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - [] - let ``26`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) + // "%FSC%" %fsc_flags% -a -o:pack.dll xlibC.ml + do! fsc cfg "%s -a -o:pack.dll" cfg.fsc_flags ["xlibC.ml"] + // "%PEVERIFY%" pack.dll + do! peverify cfg "pack.dll" -module ``321`` = + // "%FSC%" %fsc_flags% -o:test.exe -r:pack.dll main.fs + do! fsc cfg "%s -o:test.exe -r:pack.dll" cfg.fsc_flags ["main.fs"] - [] - let ``321`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) + // "%PEVERIFY%" test.exe + do! peverify cfg "test.exe" + // if exist test.ok (del /f /q test.ok) + use testOkFile = fileguard cfg "test.ok" -module ``655`` = + // %CLIX% test.exe + do! exec cfg ("."/"test.exe") "" - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - - // "%FSC%" %fsc_flags% -a -o:pack.dll xlibC.ml - do! fsc "%s -a -o:pack.dll" cfg.fsc_flags ["xlibC.ml"] - - // "%PEVERIFY%" pack.dll - do! peverify "pack.dll" - - // "%FSC%" %fsc_flags% -o:test.exe -r:pack.dll main.fs - do! fsc "%s -o:test.exe -r:pack.dll" cfg.fsc_flags ["main.fs"] - - // "%PEVERIFY%" test.exe - do! peverify "test.exe" - - } - - let run cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fileguard = (Commands.getfullpath dir) >> FileGuard.create - - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" - - // %CLIX% test.exe - do! exec ("."/"test.exe") "" - - // if NOT EXIST test.ok goto SetError - do! testOkFile |> NUnitConf.checkGuardExists - } - - [] - let ``655`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + // if NOT EXIST test.ok goto SetError + do! testOkFile |> NUnitConf.checkGuardExists - }) - + }) -module ``656`` = - let build cfg dir = attempt { +[] +let ``656`` () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" + // "%FSC%" %fsc_flags% -o:pack.exe misc.fs mathhelper.fs filehelper.fs formshelper.fs plot.fs traj.fs playerrecord.fs trackedplayers.fs form.fs + do! fsc cfg "%s -o:pack.exe" cfg.fsc_flags ["misc.fs mathhelper.fs filehelper.fs formshelper.fs plot.fs traj.fs playerrecord.fs trackedplayers.fs form.fs"] - // "%FSC%" %fsc_flags% -o:pack.exe misc.fs mathhelper.fs filehelper.fs formshelper.fs plot.fs traj.fs playerrecord.fs trackedplayers.fs form.fs - do! fsc "%s -o:pack.exe" cfg.fsc_flags ["misc.fs mathhelper.fs filehelper.fs formshelper.fs plot.fs traj.fs playerrecord.fs trackedplayers.fs form.fs"] - - // "%PEVERIFY%" pack.exe - do! peverify "pack.exe" - } - - [] - let ``656`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir + // "%PEVERIFY%" pack.exe + do! peverify cfg "pack.exe" - }) - - + }) -module ``83`` = - [] - let ``83`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - // if "%CLR_SUPPORTS_WINFORMS%"=="false" ( goto Skip) - do! match cfg.EnvironmentVariables |> Map.tryFind "CLR_SUPPORTS_WINFORMS" |> Option.map (fun s -> s.ToLower()) with - | Some "false" -> NUnitConf.skip "env var CLR_SUPPORTS_WINFORMS is false" - | Some _ | None -> Success - - // call %~d0%~p0..\..\single-test-build.bat - do! SingleTestBuild.singleTestBuild cfg dir p +[] +let ``83`` p = singleTestBuildAndRun p - // if "%CLR_SUPPORTS_WINFORMS%"=="false" ( goto Skip ) - ignore "already skipped if CLR_SUPPORTS_WINFORMS == false" +[] +let ``84`` p = singleTestBuildAndRun p - // if "%COMPLUS_Version%"=="v1.0.3705" ( goto Skip ) - do! match cfg.EnvironmentVariables |> Map.tryFind "COMPLUS_Version" |> Option.map (fun s -> s.ToLower()) with - | Some "v1.0.3705" -> NUnitConf.skip "env var COMPLUS_Version is v1.0.3705" - | Some _ | None -> Success +[] +let ``85`` () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // call %~d0%~p0..\..\single-test-run.bat - do! SingleTestRun.singleTestRun cfg dir p - }) + // "%FSC%" %fsc_flags% -r:Category.dll -a -o:petshop.dll Category.ml + do! fsc cfg "%s -r:Category.dll -a -o:petshop.dll" cfg.fsc_flags ["Category.ml"] - - -module ``84`` = - - [] - let ``84`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) - - -module ``85`` = - - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - - // if "%CLR_SUPPORTS_GENERICS%"=="false" ( goto Skip) - do! match cfg.EnvironmentVariables |> Map.tryFind "CLR_SUPPORTS_GENERICS" |> Option.map (fun s -> s.ToLower()) with - | Some "false" -> NUnitConf.skip "env var CLR_SUPPORTS_GENERICS is false" - | Some _ | None -> Success - - // if "%CLR_SUPPORTS_SYSTEM_WEB%"=="false" ( goto Skip) - do! match cfg.EnvironmentVariables |> Map.tryFind "CLR_SUPPORTS_SYSTEM_WEB" |> Option.map (fun s -> s.ToLower()) with - | Some "false" -> NUnitConf.skip "env var CLR_SUPPORTS_SYSTEM_WEB is false" - | Some _ | None -> Success - - // "%FSC%" %fsc_flags% -r:Category.dll -a -o:petshop.dll Category.ml - do! fsc "%s -r:Category.dll -a -o:petshop.dll" cfg.fsc_flags ["Category.ml"] - - // "%PEVERIFY%" petshop.dll - do! peverify "petshop.dll" - - } - - [] - let ``85`` () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - // REM build.bat produces only dll's. Nothing to run + do! peverify cfg "petshop.dll" - }) - - -module ``86`` = - - [] - let ``86`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) - + }) -module ``Tuple-bug-1`` = +[] +let ``86`` p = singleTestBuildAndRun p - [] - let ``tuple-bug-1`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) +[] +let ``tuple-bug-1`` p = singleTestBuildAndRun p diff --git a/tests/fsharp/single-neg-test.fs b/tests/fsharp/single-neg-test.fs deleted file mode 100644 index 08eb175746f..00000000000 --- a/tests/fsharp/single-neg-test.fs +++ /dev/null @@ -1,209 +0,0 @@ -module SingleNegTest - -open System -open System.IO -open NUnit.Framework - -open PlatformHelpers -open NUnitConf -open FSharpTestSuiteTypes - -let private singleNegTestAux (cfg: TestConfig) workDir testname = attempt { - - // call %~d0%~p0..\config.bat - ignore "from arguments" - - // if errorlevel 1 ( - // set ERRORMSG=%ERRORMSG% config.bat failed; - // goto :ERROR - // ) - ignore "already checked" - - let exec p = Command.exec workDir cfg.EnvironmentVariables { Output = Inherit; Input = None } p >> checkResult - let fsdiff = Commands.fsdiff exec cfg.FSDIFF - let envOrFail key = - cfg.EnvironmentVariables - |> Map.tryFind key - |> function Some x -> (fun () -> Success x) | None -> NUnitConf.genericError (sprintf "environment variable '%s' required " key) - let fullpath = Commands.getfullpath workDir - let fileExists = fullpath >> Commands.fileExists workDir >> Option.isSome - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let fsc_flags = cfg.fsc_flags - - // if not exist "%FSC%" ( - // set ERRORMSG=Could not find FSC at path "%FSC%" - // goto :ERROR - // ) - ignore "already checked" - - // set testname=%1 - ignore "from arguments" - - // REM == Set baseline (fsc vs vs, in case the vs baseline exists) - let VSBSLFILE = - // IF EXIST %testname%.vsbsl (set BSLFILE=%testname%.vsbsl) - // IF NOT EXIST %testname%.vsbsl (set BSLFILE=%testname%.bsl) - if (sprintf "%s.vsbsl" testname) |> fileExists - then sprintf "%s.vsbsl" testname - else sprintf "%s.bsl" testname - - // set sources= - // if exist "%testname%.mli" (set sources=%sources% %testname%.mli) - // if exist "%testname%.fsi" (set sources=%sources% %testname%.fsi) - // if exist "%testname%.ml" (set sources=%sources% %testname%.ml) - // if exist "%testname%.fs" (set sources=%sources% %testname%.fs) - // if exist "%testname%.fsx" (set sources=%sources% %testname%.fsx) - // if exist "%testname%a.mli" (set sources=%sources% %testname%a.mli) - // if exist "%testname%a.fsi" (set sources=%sources% %testname%a.fsi) - // if exist "%testname%a.ml" (set sources=%sources% %testname%a.ml) - // if exist "%testname%a.fs" (set sources=%sources% %testname%a.fs) - // if exist "%testname%b.mli" (set sources=%sources% %testname%b.mli) - // if exist "%testname%b.fsi" (set sources=%sources% %testname%b.fsi) - // if exist "%testname%b.ml" (set sources=%sources% %testname%b.ml) - // if exist "%testname%b.fs" (set sources=%sources% %testname%b.fs) - let sources = [ - let src = [ testname + ".mli"; testname + ".fsi"; testname + ".ml"; testname + ".fs"; testname + ".fsx"; - testname + "a.mli"; testname + "a.fsi"; testname + "a.ml"; testname + "a.fs"; - testname + "b.mli"; testname + "b.fsi"; testname + "b.ml"; testname + "b.fs"; ] - - yield! src |> List.filter fileExists - - // if exist "helloWorldProvider.dll" (set sources=%sources% -r:helloWorldProvider.dll) - if fileExists "helloWorldProvider.dll" then - yield "-r:helloWorldProvider.dll" - - // if exist "%testname%-pre.fs" ( - // set sources=%sources% -r:%testname%-pre.dll - // ) - if fileExists (testname + "-pre.fs") then - yield (sprintf "-r:%s-pre.dll" testname) - - ] - - // REM check negative tests for bootstrapped fsc.exe due to line-ending differences - // if "%FSC:fscp=X%" == "%FSC%" ( - do! if cfg.FSC.Contains("fscp") - then NUnitConf.skip "bootstrapped fsc.exe due to line-ending differences" - else Success - - // if exist "%testname%-pre.fs" ( - do! if fileExists (testname + "-pre.fs") - // "%FSC%" %fsc_flags% -a -o:%testname%-pre.dll "%testname%-pre.fs" - then fsc "%s -a -o:%s-pre.dll" fsc_flags testname [testname + "-pre.fs"] - else Success () - // @if ERRORLEVEL 1 ( - // set ERRORMSG=%ERRORMSG% FSC failed for precursor library code for %sources%; - // goto SetError - // ) - // ) - - // echo Negative typechecker testing: %testname% - log "Negative typechecker testing: %s" testname - - let ``fail fsc 2> a`` = - // "%FSC%" %fsc_flags% --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%testname%.dll %sources% 2> %testname%.err - // @if NOT ERRORLEVEL 1 ( - // set ERRORMSG=%ERRORMSG% FSC passed unexpectedly for %sources%; - // goto SetError - // ) - let ``exec 2>`` errPath = Command.exec workDir cfg.EnvironmentVariables { Output = Error(Overwrite(errPath)); Input = None } - let checkErrorLevel1 = function - | CmdResult.ErrorLevel (_,1) -> Success - | CmdResult.Success | CmdResult.ErrorLevel _ -> NUnitConf.genericError (sprintf "FSC passed unexpectedly for %A" sources) - - Printf.ksprintf (fun flags sources errPath -> Commands.fsc (``exec 2>`` errPath) cfg.FSC flags sources |> checkErrorLevel1) - - let fsdiff a b = attempt { - let out = new ResizeArray() - let redirectOutputToFile path args = - log "%s %s" path args - use toLog = redirectToLog () - Process.exec { RedirectOutput = Some (function null -> () | s -> out.Add(s)); RedirectError = Some toLog.Post; RedirectInput = None; } workDir cfg.EnvironmentVariables path args - do! (Commands.fsdiff redirectOutputToFile cfg.FSDIFF a b) |> checkResult - return out.ToArray() |> List.ofArray - } - - // "%FSC%" %fsc_flags% --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%testname%.dll %sources% 2> %testname%.err - do! ``fail fsc 2> a`` """%s --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%s.dll""" fsc_flags testname sources (sprintf "%s.err" testname) - - // %FSDIFF% %testname%.err %testname%.bsl > %testname%.diff - let! testnameDiff = fsdiff (sprintf "%s.err" testname) (sprintf "%s.bsl" testname) - - // for /f %%c IN (%testname%.diff) do ( - do! match testnameDiff with - | [] -> Success - | l -> - // echo ***** %testname%.err %testname%.bsl differed: a bug or baseline may neeed updating - log "***** %s.err %s.bsl differed: a bug or baseline may neeed updating" testname testname - // set ERRORMSG=%ERRORMSG% %testname%.err %testname%.bsl differ; - NUnitConf.genericError (sprintf "%s.err %s.bsl differ; %A" testname testname l) - - // echo Good, output %testname%.err matched %testname%.bsl - log "Good, output %s.err matched %s.bsl" testname testname - - // "%FSC%" %fsc_flags% --test:ContinueAfterParseFailure --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%testname%.dll %sources% 2> %testname%.vserr - do! ``fail fsc 2> a`` "%s --test:ContinueAfterParseFailure --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%s.dll" fsc_flags testname sources (sprintf "%s.vserr" testname) - // @if NOT ERRORLEVEL 1 ( - // set ERRORMSG=%ERRORMSG% FSC passed unexpectedly for %sources%; - // goto SetError - // ) - - // %FSDIFF% %testname%.vserr %BSLFILE% > %testname%.vsdiff - let! testnameDiff = fsdiff (sprintf "%s.vserr" testname) VSBSLFILE - - // for /f %%c IN (%testname%.vsdiff) do ( - do! match testnameDiff with - | [] -> Success - | l -> - // echo ***** %testname%.vserr %BSLFILE% differed: a bug or baseline may neeed updating - log "***** %s.vserr %s differed: a bug or baseline may neeed updating" testname VSBSLFILE - // set ERRORMSG=%ERRORMSG% %testname%.vserr %BSLFILE% differ; - NUnitConf.genericError (sprintf "%s.vserr %s differ; %A" testname VSBSLFILE l) - - // echo Good, output %testname%.vserr matched %BSLFILE% - log "Good, output %s.vserr matched %s" testname VSBSLFILE - // ) - } - -let singleNegTest = - - // :Ok - let doneOK x = - // echo Ran fsharp %~f0 ok. - log "Ran fsharp %%~f0 ok" - // endlocal - // exit /b 0 - // goto :EOF - Success x - - // :Skip - let doneSkipped workDir msg x = - // echo Skipped %~f0 - log "Skipped neg run '%s' reason: %s" workDir msg - // endlocal - // exit /b 0 - // goto :EOF - Success x - - // :Error - let doneError err msg = - // echo %ERRORMSG% - log "%s" msg - // exit /b %ERRORLEVEL% - // goto :EOF - Failure (err) - - // :SETERROR - // set NonexistentErrorLevel 2> nul - // goto Error - // goto :EOF - - let flow cfg workDir testname () = - singleNegTestAux cfg workDir testname - |> Attempt.Run - |> function - | Success () -> doneOK () - | Failure (Skipped msg) -> doneSkipped workDir msg () - | Failure (GenericError msg) -> doneError (GenericError msg) msg - | Failure (ProcessExecError (_,_,msg) as err) -> doneError err msg - flow diff --git a/tests/fsharp/single-test-build.fs b/tests/fsharp/single-test-build.fs deleted file mode 100644 index 08d421dd29f..00000000000 --- a/tests/fsharp/single-test-build.fs +++ /dev/null @@ -1,347 +0,0 @@ -module SingleTestBuild - -open System -open System.IO -open System.Diagnostics -open NUnit.Framework - -open PlatformHelpers -open NUnitConf -open FSharpTestSuiteTypes - - -let singleTestBuild cfg testDir = - - let fileExists = Commands.fileExists testDir >> Option.isSome - let del = Commands.rm testDir - - //if EXIST build.ok DEL /f /q build.ok - let buildOkPath = testDir / "build.ok" - do if fileExists "build.ok" then del "build.ok" - - //remove FSharp.Core.dll from the target directory to ensure that compiler uses the correct FSharp.Core.dll - do if fileExists "FSharp.Core.dll" then del "FSharp.Core.dll" - - - //call %~d0%~p0..\config.bat - ignore "param" - - //if NOT "%FSC:NOTAVAIL=X%" == "%FSC%" ( - // goto Skip - //) - ignore "already checked fsc/fsi exists" - - //set source1= - //if exist test.ml (set source1=test.ml) - //if exist test.fs (set source1=test.fs) - let source1 = - ["test.ml"; "test.fs"] - |> List.rev - |> List.tryFind fileExists - - //set sources= - //if exist testlib.fsi (set sources=%sources% testlib.fsi) - //if exist testlib.fs (set sources=%sources% testlib.fs) - //if exist test.mli (set sources=%sources% test.mli) - //if exist test.ml (set sources=%sources% test.ml) - //if exist test.fsi (set sources=%sources% test.fsi) - //if exist test.fs (set sources=%sources% test.fs) - //if exist test2.fsi (set sources=%sources% test2.fsi) - //if exist test2.fs (set sources=%sources% test2.fs) - //if exist test.fsx (set sources=%sources% test.fsx) - //if exist test2.fsx (set sources=%sources% test2.fsx) - let sources = - ["testlib.fsi";"testlib.fs";"test.mli";"test.ml";"test.fsi";"test.fs";"test2.fsi";"test2.fs";"test.fsx";"test2.fsx"] - |> List.filter fileExists - - - //rem to run the 64 bit version of the code set FSC_BASIC_64=FSC_BASIC_64 - //set PERMUTATIONS_LIST=FSI_FILE FSI_STDIN FSI_STDIN_OPT FSI_STDIN_GUI FSC_BASIC %FSC_BASIC_64% GENERATED_SIGNATURE FSC_OPT_MINUS_DEBUG FSC_OPT_PLUS_DEBUG SPANISH AS_DLL - - //if "%REDUCED_RUNTIME%"=="1" ( - // echo REDUCED_RUNTIME set - // - // if not defined PERMUTATIONS ( - // powershell.exe %PSH_FLAGS% -command "&{& '%~d0%~p0\PickPermutations.ps1' '%cd%' '%FSC%' '%PERMUTATIONS_LIST%'}" > _perm.txt - // if errorlevel 1 ( - // set ERRORMSG=%ERRORMSG% PickPermutations.ps1 failed; - // goto :ERROR - // ) - // set /p PERMUTATIONS=<_perm.txt - // ) - // - // powershell.exe %PSH_FLAGS% -command "&{& '%~d0%~p0\DecidePEVerify.ps1' '%cd%' '%FSC%'}" - // if errorlevel 1 ( - // set ERRORMSG=%ERRORMSG% DecidePEVerify.ps1 failed; - // goto :ERROR - // ) - //) - - //if not defined PERMUTATIONS ( - // echo "PERMUTATIONS not defined. Building everything." - // set PERMUTATIONS=%PERMUTATIONS_LIST% - //) - - //for %%A in (%PERMUTATIONS%) do ( - // call :%%A - // IF ERRORLEVEL 1 EXIT /B 1 - //) - ignore "permutations useless because build type is an input" - - let exec p = Command.exec testDir cfg.EnvironmentVariables { Output = Inherit; Input = None } p >> checkResult - - let echo_tofile = Commands.echo_tofile testDir - let copy_y f = Commands.copy_y testDir f >> checkResult - let type_append_tofile = Commands.type_append_tofile testDir - let fsc = Printf.ksprintf (fun flags -> Commands.fsc exec cfg.FSC flags) - let fsc_flags = cfg.fsc_flags - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let ``echo._tofile`` = Commands.``echo._tofile`` testDir - - //:Ok - let doneOk x = - //echo Built fsharp %~f0 ok. - log "Built fsharp %s ok." testDir - //echo. > build.ok - ``echo._tofile`` " " "build.ok" - //endlocal - //exit /b 0 - Success x - - //:Skip - let doneSkipped msg x = - //echo Skipped %~f0 - log "Skipped build '%s' reason: %s" testDir msg - //endlocal - ``echo._tofile`` " " "build.ok" - //exit /b 0 - Success x - - //:Error - let doneError err msg = - //echo Test Script Failed (perhaps test did not emit test.ok signal file?) - log "%s" msg - //endlocal - //exit /b %ERRORLEVEL% - Failure (err) - - let genericErrorMessage = "Test Script Failed (perhaps test did not emit test.ok signal file?)" - - //:SETERROR - //set NonexistentErrorLevel 2> nul - //goto Error - - let skipIfExists file = attempt { - if fileExists file - then return! NUnitConf.skip (sprintf "file '%s' found" file) - } - - let skipIfNotExists file = attempt { - if not (fileExists file) - then return! NUnitConf.skip (sprintf "file '%s' not found" file) - } - - /// - /// if NOT EXIST dont.run.peverify ( - /// "%PEVERIFY%" test.exe - /// @if ERRORLEVEL 1 goto Error - /// ) - /// - let doPeverify cmd = attempt { - do! skipIfExists "dont.run.peverify" - - do! peverify cmd - } - - let doNOOP () = attempt { - //@echo No build action to take for this permutation - log "No build action to take for this permutation" - } - - let doBasic () = attempt { - // FSC %fsc_flags% --define:BASIC_TEST -o:test.exe -g %sources% - //if ERRORLEVEL 1 goto Error - do! fsc "%s --define:BASIC_TEST -o:test.exe -g" fsc_flags sources - - //if NOT EXIST dont.run.peverify ( - // "%PEVERIFY%" test.exe - // @if ERRORLEVEL 1 goto Error - //) - do! doPeverify "test.exe" - } - - let doBasic64 () = attempt { - // "%FSC%" %fsc_flags% --define:BASIC_TEST --platform:x64 -o:testX64.exe -g %sources% - do! fsc "%s --define:BASIC_TEST --platform:x64 -o:testX64.exe -g" fsc_flags sources - - // if NOT EXIST dont.run.peverify ( - // "%PEVERIFY%" testX64.exe - // ) - do! doPeverify "testX64.exe" - } - - - let doGeneratedSignature () = attempt { - //if NOT EXIST dont.use.generated.signature ( - do! skipIfExists "dont.use.generated.signature" - - // if exist test.ml ( - do! skipIfNotExists "test.fs" - - // echo Generating interface file... - log "Generating interface file..." - // copy /y %source1% tmptest.ml - do! source1 |> Option.map (fun from -> copy_y from "tmptest.fs") - // REM NOTE: use --generate-interface-file since results may be in Unicode - // "%FSC%" %fsc_flags% --sig:tmptest.mli tmptest.ml - do! fsc "%s --sig:tmptest.fsi" fsc_flags ["tmptest.fs"] - - // echo Compiling against generated interface file... - log "Compiling against generated interface file..." - // "%FSC%" %fsc_flags% -o:tmptest1.exe tmptest.fsi tmptest.fs - do! fsc "%s -o:tmptest1.exe" fsc_flags ["tmptest.fsi";"tmptest.fs"] - - do! doPeverify "tmptest1.exe" - } - - let doEmptySignature () = attempt { - //if NOT EXIST dont.use.empty.signature ( - do! skipIfExists "dont.use.empty.signature" - - // if exist test.fs ( - do! skipIfNotExists "test.fs" - - // echo Compiling against empty interface file... - log "Compiling against empty interface file..." - // echo // empty file > tmptest2.fsi - echo_tofile "// empty file " "tmptest2.fsi" - // copy /y %source1% tmptest2.fs - do! source1 |> Option.map (fun from -> copy_y from "tmptest2.fs") - // "%FSC%" %fsc_flags% --define:COMPILING_WITH_EMPTY_SIGNATURE -o:tmptest2.exe tmptest2.fsi tmptest2.fs - do! fsc "%s --define:COMPILING_WITH_EMPTY_SIGNATURE -o:tmptest2.exe" fsc_flags ["tmptest2.fsi";"tmptest2.fs"] - - do! doPeverify "tmptest2.exe" - } - - - let doEmptySignatureOpt () = attempt { - //if NOT EXIST dont.use.empty.signature ( - do! skipIfExists "dont.use.empty.signature" - - // if exist test.fs ( - do! skipIfNotExists "test.fs" - - // echo Compiling against empty interface file... - log "Compiling against empty interface file..." - // echo // empty file > tmptest2.fsi - echo_tofile "// empty file " "tmptest2.fsi" - // copy /y %source1% tmptest2.fs - do! source1 |> Option.map (fun from -> copy_y from "tmptest2.fs") - // "%FSC%" %fsc_flags% --define:COMPILING_WITH_EMPTY_SIGNATURE --optimize -o:tmptest2--optimize.exe tmptest2.fsi tmptest2.fs - do! fsc "%s --define:COMPILING_WITH_EMPTY_SIGNATURE --optimize -o:tmptest2--optimize.exe" fsc_flags ["tmptest2.fsi";"tmptest2.fs"] - - do! doPeverify "tmptest2--optimize.exe" - } - - let doOptFscMinusDebug () = attempt { - // "%FSC%" %fsc_flags% --optimize- --debug -o:test--optminus--debug.exe -g %sources% - do! fsc "%s --optimize- --debug -o:test--optminus--debug.exe -g" fsc_flags sources - - do! doPeverify "test--optminus--debug.exe" - } - - let doOptFscPlusDebug () = attempt { - // "%FSC%" %fsc_flags% --optimize+ --debug -o:test--optplus--debug.exe -g %sources% - do! fsc "%s --optimize+ --debug -o:test--optplus--debug.exe -g" fsc_flags sources - - // if NOT EXIST dont.run.peverify ( - // "%PEVERIFY%" test--optplus--debug.exe - // ) - do! doPeverify "test--optplus--debug.exe" - } - - let doAsDLL () = attempt { - //REM Compile as a DLL to exercise pickling of interface data, then recompile the original source file referencing this DLL - //REM THe second compilation will not utilize the information from the first in any meaningful way, but the - //REM compiler will unpickle the interface and optimization data, so we test unpickling as well. - - //if NOT EXIST dont.compile.test.as.dll ( - do! skipIfExists "dont.compile.test.as.dll" - - // "%FSC%" %fsc_flags% --optimize -a -o:test--optimize-lib.dll -g %sources% - do! fsc "%s --optimize -a -o:test--optimize-lib.dll -g" fsc_flags sources - - // "%FSC%" %fsc_flags% --optimize -r:test--optimize-lib.dll -o:test--optimize-client-of-lib.exe -g %sources% - do! fsc "%s --optimize -r:test--optimize-lib.dll -o:test--optimize-client-of-lib.exe -g" fsc_flags sources - - // if NOT EXIST dont.run.peverify ( - // "%PEVERIFY%" test--optimize-lib.dll - // ) - do! doPeverify "test--optimize-lib.dll" - - // if NOT EXIST dont.run.peverify ( - // "%PEVERIFY%" test--optimize-client-of-lib.exe - // ) - do! doPeverify "test--optimize-client-of-lib.exe" - } - - let doWrapperNamespace () = attempt { - // if NOT EXIST dont.use.wrapper.namespace ( - do! skipIfExists "dont.use.wrapper.namespace" - - do! skipIfNotExists "test.fs" - - // echo Compiling when wrapped in a namespace declaration... - log "Compiling when wrapped in a namespace declaration..." - // echo module TestNamespace.TestModule > tmptest3.fs - echo_tofile "module TestNamespace.TestModule " "tmptest3.fs" - // type %source1% >> tmptest3.fs - source1 |> Option.iter (fun from -> type_append_tofile from "tmptest3.fs") - // "%FSC%" %fsc_flags% -o:tmptest3.exe tmptest3.fs - do! fsc "%s -o:tmptest3.exe" fsc_flags ["tmptest3.fs"] - - do! doPeverify "tmptest3.exe" - } - - let doWrapperNamespaceOpt () = attempt { - //if NOT EXIST dont.use.wrapper.namespace ( - do! skipIfExists "dont.use.wrapper.namespace" - - // if exist test.fs ( - do! skipIfNotExists "test.fs" - - // echo Compiling when wrapped in a namespace declaration... - log "Compiling when wrapped in a namespace declaration..." - // echo module TestNamespace.TestModule > tmptest3.fs - echo_tofile "module TestNamespace.TestModule " "tmptest3.fs" - // type %source1% >> tmptest3.fs - source1 |> Option.iter (fun from -> type_append_tofile from "tmptest3.fs") - // "%FSC%" %fsc_flags% --optimize -o:tmptest3--optimize.exe tmptest3.fs - do! fsc "%s --optimize -o:tmptest3--optimize.exe" fsc_flags ["tmptest3.fs"] - - do! doPeverify "tmptest3--optimize.exe" - } - - let build = function - | FSI_FILE -> doNOOP - | FSI_STDIN -> doNOOP - | FSI_STDIN_OPT -> doNOOP - | FSI_STDIN_GUI -> doNOOP - | SPANISH -> doBasic - | FSC_BASIC -> doBasic - | FSC_BASIC_64 -> doBasic64 - | GENERATED_SIGNATURE -> doGeneratedSignature - | FSC_OPT_MINUS_DEBUG -> doOptFscMinusDebug - | FSC_OPT_PLUS_DEBUG -> doOptFscPlusDebug - | AS_DLL -> doAsDLL - - let flow p () = - build p () - |> Attempt.Run - |> function - | Success () -> doneOk () - | Failure (Skipped msg) -> doneSkipped msg () - | Failure (GenericError msg as err) -> doneError err msg - | Failure (ProcessExecError (_,_,msg) as err) -> doneError err msg - - flow diff --git a/tests/fsharp/single-test-run.fs b/tests/fsharp/single-test-run.fs deleted file mode 100644 index 7b66c0015bf..00000000000 --- a/tests/fsharp/single-test-run.fs +++ /dev/null @@ -1,382 +0,0 @@ -module SingleTestRun - -open System -open System.IO -open NUnit.Framework - -open PlatformHelpers -open NUnitConf -open FSharpTestSuiteTypes - -let private singleTestRun' cfg testDir = - - let getfullpath = Commands.getfullpath testDir - let fileExists = Commands.fileExists testDir >> Option.isSome - - // set sources= - // if exist testlib.fsi (set sources=%sources% testlib.fsi) - // if exist testlib.fs (set sources=%sources% testlib.fs) - // if exist test.mli (set sources=%sources% test.mli) - // if exist test.ml (set sources=%sources% test.ml) - // if exist test.fsi (set sources=%sources% test.fsi) - // if exist test.fs (set sources=%sources% test.fs) - // if exist test2.fsi (set sources=%sources% test2.fsi) - // if exist test2.fs (set sources=%sources% test2.fs) - // if exist test.fsx (set sources=%sources% test.fsx) - // if exist test2.fsx (set sources=%sources% test2.fsx) - let sources = - ["testlib.fsi";"testlib.fs";"test.mli";"test.ml";"test.fsi";"test.fs";"test2.fsi";"test2.fs";"test.fsx";"test2.fsx"] - |> List.filter fileExists - - // :START - - // set PERMUTATIONS_LIST=FSI_FILE FSI_STDIN FSI_STDIN_OPT FSI_STDIN_GUI FSC_BASIC %FSC_BASIC_64% FSC_HW FSC_O3 GENERATED_SIGNATURE FSC_OPT_MINUS_DEBUG FSC_OPT_PLUS_DEBUG SPANISH AS_DLL - // - // if "%REDUCED_RUNTIME%"=="1" ( - // echo REDUCED_RUNTIME set - // - // if not defined PERMUTATIONS ( - // powershell.exe %PSH_FLAGS% -command "&{& '%~d0%~p0\PickPermutations.ps1' '%cd%' '%FSC%' '%PERMUTATIONS_LIST%'}" > _perm.txt - // if errorlevel 1 ( - // set ERRORMSG=%ERRORMSG% PickPermutations.ps1 failed; - // goto :ERROR - // ) - // set /p PERMUTATIONS=<_perm.txt - // ) - // ) - ignore "test is parametrized" - - // if not defined PERMUTATIONS ( - // echo "PERMUTATIONS not defined. Running everything." - // set PERMUTATIONS=%PERMUTATIONS_LIST% - // ) - ignore "test is parametrized" - - // for %%A in (%PERMUTATIONS%) do ( - // call :%%A - // IF ERRORLEVEL 1 EXIT /B 1 - // ) - ignore "test is parametrized" - - // if "%ERRORMSG%"=="" goto Ok - - // set NonexistentErrorLevel 2> nul - // goto :ERROR - - // :END - - // :EXIT_PATHS - - // REM ========================================= - // REM THE TESTS - // REM ========================================= - - let exec p = Command.exec testDir cfg.EnvironmentVariables { Output = Inherit; Input = None } p >> checkResult - - let fsi = Printf.ksprintf (fun flags l -> Commands.fsi exec cfg.FSI flags l) - let ``exec <`` l p = Command.exec testDir cfg.EnvironmentVariables { Output = Inherit; Input = Some(RedirectInput(l)) } p >> checkResult - let ``fsi <`` = Printf.ksprintf (fun flags l -> Commands.fsi (``exec <`` l) cfg.FSI flags []) - - let fsi_flags = cfg.fsi_flags - - let createTestOkFile () = NUnitConf.FileGuard.create (getfullpath "test.ok") - - let skipIfExists file = attempt { - if fileExists file - then return! NUnitConf.skip (sprintf "file '%s' found" file) - } - - let skipIfNotExists file = attempt { - if not (fileExists file) - then return! NUnitConf.skip (sprintf "file '%s' not found" file) - } - - - // :FSI_STDIN - // @echo do :FSI_STDIN - let runFSI_STDIN () = attempt { - // if NOT EXIST dont.pipe.to.stdin ( - do! skipIfExists "dont.pipe.to.stdin" - - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% "%FSI%" %fsi_flags% < %sources% && ( - do! ``fsi <`` "%s" fsi_flags (sources |> List.rev |> List.head) //use last file, because `cmd < a.txt b.txt` redirect b.txt only - // dir test.ok > NUL 2>&1 ) || ( - // @echo FSI_STDIN failed; - // set ERRORMSG=%ERRORMSG% FSI_STDIN failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - // ) - } - - // :FSI_STDIN_OPT - // @echo do :FSI_STDIN_OPT - let runFSI_STDIN_OPT () = attempt { - // if NOT EXIST dont.pipe.to.stdin ( - do! skipIfExists "dont.pipe.to.stdin" - - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% "%FSI%" %fsi_flags% --optimize < %sources% && ( - do! ``fsi <`` "%s --optimize" fsi_flags (sources |> List.rev |> List.head) //use last file, because `cmd < a.txt b.txt` redirect b.txt only - // dir test.ok > NUL 2>&1 ) || ( - // @echo FSI_STDIN_OPT failed - // set ERRORMSG=%ERRORMSG% FSI_STDIN_OPT failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - // ) - } - - // :FSI_STDIN_GUI - // @echo do :FSI_STDIN_GUI - let runFSI_STDIN_GUI () = attempt { - // if NOT EXIST dont.pipe.to.stdin ( - do! skipIfExists "dont.pipe.to.stdin" - - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% "%FSI%" %fsi_flags% --gui < %sources% && ( - do! ``fsi <`` "%s --gui" fsi_flags (sources |> List.rev |> List.head) //use last file, because `cmd < a.txt b.txt` redirect b.txt only - // dir test.ok > NUL 2>&1 ) || ( - // @echo FSI_STDIN_GUI failed; - // set ERRORMSG=%ERRORMSG% FSI_STDIN_GUI failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - // ) - } - - // :FSI_FILE - // @echo do :FSI_FILE - let runFSI_FILE () = attempt { - // if NOT EXIST dont.run.as.script ( - do! skipIfExists "dont.run.as.script" - - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% "%FSI%" %fsi_flags% %sources% && ( - do! fsi "%s" fsi_flags sources - // dir test.ok > NUL 2>&1 ) || ( - // @echo FSI_FILE failed - // set ERRORMSG=%ERRORMSG% FSI_FILE failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - // ) - } - - // :FSC_BASIC - // @echo do :FSC_BASIC - let runFSC_BASIC () = attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% .\test.exe && ( - do! exec ("."/"test.exe") "" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :FSC_BASIC failed - // set ERRORMSG=%ERRORMSG% FSC_BASIC failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - } - - // :FSC_BASIC_64 - // @echo do :FSC_BASIC_64 - let runFSC_BASIC_64 () = attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% .\testX64.exe && ( - do! exec ("."/"testX64.exe") "" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :FSC_BASIC_64 failed - // set ERRORMSG=%ERRORMSG% FSC_BASIC_64 failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - } - - // :FSC_O3 - // @echo do :FSC_O3 - let runFSC_O3 () = attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% .\test--optimize.exe && ( - do! exec ("."/"test--optimize.exe") "" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :FSC_O3 failed - // set ERRORMSG=%ERRORMSG% FSC_03 failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - } - - // :FSC_OPT_MINUS_DEBUG - // @echo do :FSC_OPT_MINUS_DEBUG - let runFSC_OPT_MINUS_DEBUG () = attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% .\test--optminus--debug.exe && ( - do! exec ("."/"test--optminus--debug.exe") "" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :FSC_OPT_MINUS_DEBUG failed - // set ERRORMSG=%ERRORMSG% FSC_OPT_MINUS_DEBUG failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - } - - // :FSC_OPT_PLUS_DEBUG - // @echo do :FSC_OPT_PLUS_DEBUG - let runFSC_OPT_PLUS_DEBUG () = attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% .\test--optplus--debug.exe && ( - do! exec ("."/"test--optplus--debug.exe") "" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :FSC_OPT_PLUS_DEBUG failed - // set ERRORMSG=%ERRORMSG% FSC_OPT_PLUS_DEBUG failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - } - - // :GENERATED_SIGNATURE - // @echo do :GENERATED_SIGNATURE - let runGENERATED_SIGNATURE () = attempt { - // if NOT EXIST dont.use.generated.signature ( - do! skipIfExists "dont.use.generated.signature" - - // if exist test.fs ( - do! skipIfNotExists "test.fs" - - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% tmptest1.exe && ( - do! exec ("."/"tmptest1.exe") "" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :GENERATED_SIGNATURE failed - // set ERRORMSG=%ERRORMSG% FSC_GENERATED_SIGNATURE failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - // ) - //) - } - - // :SPANISH - // @echo do :SPANISH - let runSPANISH () = attempt { - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% .\test.exe es-ES && ( - do! exec ("."/"test.exe") "es-ES" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :SPANISH failed - // set ERRORMSG=%ERRORMSG% SPANISH failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - } - - // :AS_DLL - // @echo do :AS_DLL - let runAS_DLL () = attempt { - //if NOT EXIST dont.compile.test.as.dll ( - do! skipIfExists "dont.compile.test.as.dll" - - // if exist test.ok (del /f /q test.ok) - use testOkFile = createTestOkFile () - // %CLIX% .\test--optimize-client-of-lib.exe && ( - do! exec ("."/"test--optimize-client-of-lib.exe") "" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :AS_DLL failed - // set ERRORMSG=%ERRORMSG% AS_DLL failed; - // ) - do! testOkFile |> NUnitConf.checkGuardExists - //) - } - - let run = function - | FSI_FILE -> runFSI_FILE - | FSI_STDIN -> runFSI_STDIN - | FSI_STDIN_OPT -> runFSI_STDIN_OPT - | FSI_STDIN_GUI -> runFSI_STDIN_GUI - | SPANISH -> runSPANISH - | FSC_BASIC -> runFSC_BASIC - | FSC_BASIC_64 -> runFSC_BASIC_64 - | GENERATED_SIGNATURE -> runGENERATED_SIGNATURE - | FSC_OPT_MINUS_DEBUG -> runFSC_OPT_MINUS_DEBUG - | FSC_OPT_PLUS_DEBUG -> runFSC_OPT_PLUS_DEBUG - | AS_DLL -> runAS_DLL - - run - -let singleTestRun config testDir = - let fileExists = Commands.fileExists testDir >> Option.isSome - - //@if "%_echo%"=="" echo off - //setlocal - ignore "unused" - - //set ERRORMSG= - ignore "unused" - - //:Ok - let doneOK x = - //echo Ran fsharp %~f0 ok. - log "Ran fsharp %s ok." testDir - //exit /b 0 - Success x - - //:Skip - let doneSkipped msg = - //echo Skipped %~f0 - log "Skipped run '%s' reason: %s" testDir msg - //exit /b 0 - Failure (Skipped msg) - - //:Error - let doneError err msg = - //echo %ERRORMSG% - log "%s" msg - //exit /b %ERRORLEVEL% - Failure (err) - - let skipIfNotExists file = attempt { - if not (fileExists file) - then return! NUnitConf.skip (sprintf "file '%s' not found" file) - } - - let tests config p = attempt { - //dir build.ok > NUL ) || ( - // @echo 'build.ok' not found. - // set ERRORMSG=%ERRORMSG% Skipped because 'build.ok' not found. - // goto :ERROR - //) - do! skipIfNotExists "build.ok" - - // call %~d0%~p0..\config.bat - let cfg = config - // if errorlevel 1 ( - // set ERRORMSG=%ERRORMSG% config.bat failed; - // goto :ERROR - // ) - - // if not exist "%FSC%" ( - // set ERRORMSG=%ERRORMSG% fsc.exe not found at the location "%FSC%" - // goto :ERROR - // ) - ignore "already checked at test suite startup" - - // if not exist "%FSI%" ( - // set ERRORMSG=%ERRORMSG% fsi.exe not found at the location "%FSI%" - // goto :ERROR - // ) - ignore "already checked at test suite startup" - - do! singleTestRun' cfg testDir p () - } - - let flow p () = - tests config p - |> Attempt.Run - |> function - | Success () -> doneOK () - | Failure (Skipped msg) -> doneSkipped msg - | Failure (GenericError msg) -> doneError (GenericError msg) msg - | Failure (ProcessExecError (_,_,msg) as err) -> doneError err msg - - - flow diff --git a/tests/fsharp/single-test.fs b/tests/fsharp/single-test.fs new file mode 100644 index 00000000000..41725d6ce77 --- /dev/null +++ b/tests/fsharp/single-test.fs @@ -0,0 +1,484 @@ +module SingleTest + +open System +open System.IO +open System.Diagnostics +open NUnit.Framework + +open PlatformHelpers +open NUnitConf +open FSharpTestSuiteTypes + +let skipIfExists cfg file = attempt { + if fileExists cfg file then + return! NUnitConf.skip (sprintf "file '%s' found" file) + } + + +let skipIfNotExists cfg file = attempt { + if not (fileExists cfg file) then + return! NUnitConf.skip (sprintf "file '%s' not found" file) + } + + +let singleTestBuild (cfg:TestConfig) = + + let testDir = cfg.Directory + + do if fileExists cfg "build.ok" then rm cfg "build.ok" + + //remove FSharp.Core.dll from the target directory to ensure that compiler uses the correct FSharp.Core.dll + do if fileExists cfg "FSharp.Core.dll" then rm cfg "FSharp.Core.dll" + + let source1 = + ["test.ml"; "test.fs"] + |> List.rev + |> List.tryFind (fileExists cfg) + + let sources = + ["testlib.fsi";"testlib.fs";"test.mli";"test.ml";"test.fsi";"test.fs";"test2.fsi";"test2.fs";"test.fsx";"test2.fsx"] + |> List.filter (fileExists cfg) + + let copy_y f = Commands.copy_y testDir f >> checkResult + let ``echo._tofile`` = Commands.``echo._tofile`` testDir + + let doneOk x = + log "Built fsharp %s ok." testDir + ``echo._tofile`` " " "build.ok" + Success x + + let doneSkipped msg x = + log "Skipped build '%s' reason: %s" testDir msg + ``echo._tofile`` " " "build.ok" + Success x + + let doneError err msg = + log "%s" msg + Failure (err) + + let doPeverify cmd = attempt { + do! skipIfExists cfg "dont.run.peverify" + + do! peverify cfg cmd + } + + let doNOOP () = attempt { + log "No build action to take for this permutation" + } + + let doBasic () = attempt { + // FSC %fsc_flags% --define:BASIC_TEST -o:test.exe -g %sources% + do! fsc cfg "%s --define:BASIC_TEST -o:test.exe -g" cfg.fsc_flags sources + + do! doPeverify "test.exe" + } + + let doBasic64 () = attempt { + // "%FSC%" %fsc_flags% --define:BASIC_TEST --platform:x64 -o:testX64.exe -g %sources% + do! fsc cfg "%s --define:BASIC_TEST --platform:x64 -o:testX64.exe -g" cfg.fsc_flags sources + + do! doPeverify "testX64.exe" + } + + let doBasicCoreCLR () = attempt { + let platform = "win7-x64" + //let For %%A in ("%cd%") do (Set TestCaseName=%%~nxA) + do! fsi cfg """%s --targetPlatformName:.NETStandard,Version=v1.6/%s --source:"coreclr_utilities.fs" --source:"%s" --packagesDir:..\..\packages --projectJsonLock:%s --fsharpCore:%s --define:CoreClr --define:NetCore --compilerPath:%s --copyCompiler:yes --verbose:verbose --exec """ + cfg.fsi_flags + platform + (String.concat " " sources) + (__SOURCE_DIRECTORY__ ++ "project.lock.json") + (__SOURCE_DIRECTORY__ ++ sprintf @"..\testbin\%s\coreclr\fsc\%s\FSharp.Core.dll" cfg.BUILD_CONFIG platform) + (__SOURCE_DIRECTORY__ ++ sprintf @"..\testbin\%s\coreclr\fsc\%s" cfg.BUILD_CONFIG platform) + [__SOURCE_DIRECTORY__ ++ "..\fsharpqa\testenv\src\deployProj\CompileProj.fsx"] + } + + + let doGeneratedSignature () = attempt { + //if NOT EXIST dont.use.generated.signature ( + do! skipIfExists cfg "dont.use.generated.signature" + + do! skipIfNotExists cfg "test.fs" + + // echo Generating interface file... + log "Generating interface file..." + + do! source1 |> Option.map (fun from -> copy_y from "tmptest.fs") + + // NOTE: use --generate-interface-file since results may be in Unicode + do! fsc cfg "%s --sig:tmptest.fsi" cfg.fsc_flags ["tmptest.fs"] + + // echo Compiling against generated interface file... + log "Compiling against generated interface file..." + // "%FSC%" %fsc_flags% -o:tmptest1.exe tmptest.fsi tmptest.fs + do! fsc cfg "%s -o:tmptest1.exe" cfg.fsc_flags ["tmptest.fsi";"tmptest.fs"] + + do! doPeverify "tmptest1.exe" + } + + let doOptFscMinusDebug () = attempt { + // "%FSC%" %fsc_flags% --optimize- --debug -o:test--optminus--debug.exe -g %sources% + do! fsc cfg "%s --optimize- --debug -o:test--optminus--debug.exe -g" cfg.fsc_flags sources + + do! doPeverify "test--optminus--debug.exe" + } + + let doOptFscPlusDebug () = attempt { + // "%FSC%" %fsc_flags% --optimize+ --debug -o:test--optplus--debug.exe -g %sources% + do! fsc cfg "%s --optimize+ --debug -o:test--optplus--debug.exe -g" cfg.fsc_flags sources + + do! doPeverify "test--optplus--debug.exe" + } + + let doAsDLL () = attempt { + // Compile as a DLL to exercise pickling of interface data, then recompile the original source file referencing this DLL + // THe second compilation will not utilize the information from the first in any meaningful way, but the + // compiler will unpickle the interface and optimization data, so we test unpickling as well. + + do! skipIfExists cfg "dont.compile.test.as.dll" + + // "%FSC%" %fsc_flags% --optimize -a -o:test--optimize-lib.dll -g %sources% + do! fsc cfg "%s --optimize -a -o:test--optimize-lib.dll -g" cfg.fsc_flags sources + + // "%FSC%" %fsc_flags% --optimize -r:test--optimize-lib.dll -o:test--optimize-client-of-lib.exe -g %sources% + do! fsc cfg "%s --optimize -r:test--optimize-lib.dll -o:test--optimize-client-of-lib.exe -g" cfg.fsc_flags sources + + do! doPeverify "test--optimize-lib.dll" + + do! doPeverify "test--optimize-client-of-lib.exe" + } + + let build = function + | FSI_FILE -> doNOOP + | FSI_STDIN -> doNOOP + | FSI_STDIN_OPT -> doNOOP + | FSI_STDIN_GUI -> doNOOP + | SPANISH -> doBasic + | FSC_CORECLR -> doBasicCoreCLR + | FSC_BASIC -> doBasic + | FSC_BASIC_64 -> doBasic64 + | GENERATED_SIGNATURE -> doGeneratedSignature + | FSC_OPT_MINUS_DEBUG -> doOptFscMinusDebug + | FSC_OPT_PLUS_DEBUG -> doOptFscPlusDebug + | AS_DLL -> doAsDLL + + let flow p () = + build p () + |> Attempt.Run + |> function + | Success () -> doneOk () + | Failure (Skipped msg) -> doneSkipped msg () + | Failure (GenericError msg as err) -> doneError err msg + | Failure (ProcessExecError (_,_,msg) as err) -> doneError err msg + + flow + +let singleTestRunAux cfg = + + let sources = + ["testlib.fsi";"testlib.fs";"test.mli";"test.ml";"test.fsi";"test.fs";"test2.fsi";"test2.fs";"test.fsx";"test2.fsx"] + |> List.filter (fileExists cfg) + + let createTestOkFile () = NUnitConf.FileGuard.create (getfullpath cfg "test.ok") + + let runFSI_STDIN () = attempt { + // if NOT EXIST dont.pipe.to.stdin ( + do! skipIfExists cfg "dont.pipe.to.stdin" + + use testOkFile = createTestOkFile () + + do! ``fsi <`` cfg "%s" cfg.fsi_flags (sources |> List.rev |> List.head) //use last file, because `cmd < a.txt b.txt` redirect b.txt only + + do! testOkFile |> NUnitConf.checkGuardExists + } + + // :FSI_STDIN_OPT + // @echo do :FSI_STDIN_OPT + let runFSI_STDIN_OPT () = attempt { + // if NOT EXIST dont.pipe.to.stdin ( + do! skipIfExists cfg "dont.pipe.to.stdin" + + + use testOkFile = createTestOkFile () + // "%FSI%" %fsi_flags% --optimize < %sources% && ( + do! ``fsi <`` cfg "%s --optimize" cfg.fsi_flags (sources |> List.rev |> List.head) //use last file, because `cmd < a.txt b.txt` redirect b.txt only + // dir test.ok > NUL 2>&1 ) || ( + // @echo FSI_STDIN_OPT failed + // set ERRORMSG=%ERRORMSG% FSI_STDIN_OPT failed; + // ) + do! testOkFile |> NUnitConf.checkGuardExists + // ) + } + + let runFSI_STDIN_GUI () = attempt { + + do! skipIfExists cfg "dont.pipe.to.stdin" + + use testOkFile = createTestOkFile () + // "%FSI%" %fsi_flags% --gui < %sources% && ( + do! ``fsi <`` cfg "%s --gui" cfg.fsi_flags (sources |> List.rev |> List.head) //use last file, because `cmd < a.txt b.txt` redirect b.txt only + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let runFSI_FILE () = attempt { + do! skipIfExists cfg "dont.run.as.script" + + use testOkFile = createTestOkFile () + + do! fsi cfg "%s" cfg.fsi_flags sources + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let runFSC_BASIC () = attempt { + use testOkFile = createTestOkFile () + + do! exec cfg ("."/"test.exe") "" + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let runFSC_CORECLR () = attempt { + use testOkFile = createTestOkFile () +(* +:FSC_CORECLR +@echo do :FSC_CORECLR + set platform=win7-x64 + set packagesDir=%~d0%~p0..\..\packages + For %%A in ("%cd%") do ( Set TestCaseName=%%~nxA) + echo %~d0%~p0..\testbin\%flavor%\coreclr\%platform%\corerun.exe %~d0%~p0..\testbin\%flavor%\coreclr\fsharp\core\%TestCaseName%\output\test.exe > coreclr.run.cmd + %~d0%~p0..\testbin\%flavor%\coreclr\%platform%\corerun.exe %~d0%~p0..\testbin\%flavor%\coreclr\fsharp\core\%TestCaseName%\output\test.exe + ) +*) + do! testOkFile |> NUnitConf.checkGuardExists + return () + } + + let runFSC_BASIC_64 () = attempt { + use testOkFile = createTestOkFile () + + do! exec cfg ("."/"testX64.exe") "" + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let runFSC_OPT_MINUS_DEBUG () = attempt { + use testOkFile = createTestOkFile () + + do! exec cfg ("."/"test--optminus--debug.exe") "" + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let runFSC_OPT_PLUS_DEBUG () = attempt { + use testOkFile = createTestOkFile () + + do! exec cfg ("."/"test--optplus--debug.exe") "" + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let runGENERATED_SIGNATURE () = attempt { + do! skipIfExists cfg "dont.use.generated.signature" + + do! skipIfNotExists cfg "test.fs" + + use testOkFile = createTestOkFile () + + do! exec cfg ("."/"tmptest1.exe") "" + + do! testOkFile |> NUnitConf.checkGuardExists + + } + + let runSPANISH () = attempt { + + use testOkFile = createTestOkFile () + + do! exec cfg ("."/"test.exe") "es-ES" + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let runAS_DLL () = attempt { + do! skipIfExists cfg "dont.compile.test.as.dll" + + use testOkFile = createTestOkFile () + + do! exec cfg ("."/"test--optimize-client-of-lib.exe") "" + + do! testOkFile |> NUnitConf.checkGuardExists + } + + let run = function + | FSI_FILE -> runFSI_FILE + | FSI_STDIN -> runFSI_STDIN + | FSI_STDIN_OPT -> runFSI_STDIN_OPT + | FSI_STDIN_GUI -> runFSI_STDIN_GUI + | SPANISH -> runSPANISH + | FSC_CORECLR -> runFSC_CORECLR + | FSC_BASIC -> runFSC_BASIC + | FSC_BASIC_64 -> runFSC_BASIC_64 + | GENERATED_SIGNATURE -> runGENERATED_SIGNATURE + | FSC_OPT_MINUS_DEBUG -> runFSC_OPT_MINUS_DEBUG + | FSC_OPT_PLUS_DEBUG -> runFSC_OPT_PLUS_DEBUG + | AS_DLL -> runAS_DLL + + run + +let singleTestRun (cfg:TestConfig) = + let testDir = cfg.Directory + + let doneOK x = + log "Ran fsharp %s ok." testDir + Success x + + let doneSkipped msg = + log "Skipped run '%s' reason: %s" testDir msg + Failure (Skipped msg) + + let doneError err msg = + log "%s" msg + Failure (err) + + let tests cfg p = attempt { + do! skipIfNotExists cfg "build.ok" + + do! singleTestRunAux cfg p () + } + + let flow p () = + tests cfg p + |> Attempt.Run + |> function + | Success () -> doneOK () + | Failure (Skipped msg) -> doneSkipped msg + | Failure (GenericError msg) -> doneError (GenericError msg) msg + | Failure (ProcessExecError (_,_,msg) as err) -> doneError err msg + + + flow + + +let private singleNegTestAux (cfg: TestConfig) testname = attempt { + + // REM == Set baseline (fsc vs vs, in case the vs baseline exists) + let VSBSLFILE = + // IF EXIST %testname%.vsbsl (set BSLFILE=%testname%.vsbsl) + // IF NOT EXIST %testname%.vsbsl (set BSLFILE=%testname%.bsl) + if (sprintf "%s.vsbsl" testname) |> (fileExists cfg) + then sprintf "%s.vsbsl" testname + else sprintf "%s.bsl" testname + + let sources = [ + let src = [ testname + ".mli"; testname + ".fsi"; testname + ".ml"; testname + ".fs"; testname + ".fsx"; + testname + "a.mli"; testname + "a.fsi"; testname + "a.ml"; testname + "a.fs"; + testname + "b.mli"; testname + "b.fsi"; testname + "b.ml"; testname + "b.fs"; ] + + yield! src |> List.filter (fileExists cfg) + + if fileExists cfg "helloWorldProvider.dll" then + yield "-r:helloWorldProvider.dll" + + if fileExists cfg (testname + "-pre.fs") then + yield (sprintf "-r:%s-pre.dll" testname) + + ] + + do! if fileExists cfg (testname + "-pre.fs") + // "%FSC%" %fsc_flags% -a -o:%testname%-pre.dll "%testname%-pre.fs" + then fsc cfg "%s -a -o:%s-pre.dll" cfg.fsc_flags testname [testname + "-pre.fs"] + else Success () + + // echo Negative typechecker testing: %testname% + log "Negative typechecker testing: %s" testname + + let ``fail fsc 2> a`` = + // "%FSC%" %fsc_flags% --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%testname%.dll %sources% 2> %testname%.err + let ``exec 2>`` errPath = Command.exec cfg.Directory cfg.EnvironmentVariables { Output = Error(Overwrite(errPath)); Input = None } + let checkErrorLevel1 = function + | CmdResult.ErrorLevel (_,1) -> Success + | CmdResult.Success | CmdResult.ErrorLevel _ -> NUnitConf.genericError (sprintf "FSC passed unexpectedly for %A" sources) + + Printf.ksprintf (fun flags sources errPath -> Commands.fsc (``exec 2>`` errPath) cfg.FSC flags sources |> checkErrorLevel1) + + let fsdiff a b = attempt { + let out = new ResizeArray() + let redirectOutputToFile path args = + log "%s %s" path args + use toLog = redirectToLog () + Process.exec { RedirectOutput = Some (function null -> () | s -> out.Add(s)); RedirectError = Some toLog.Post; RedirectInput = None; } cfg.Directory cfg.EnvironmentVariables path args + do! (Commands.fsdiff redirectOutputToFile cfg.FSDIFF a b) |> checkResult + return out.ToArray() |> List.ofArray + } + + // "%FSC%" %fsc_flags% --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%testname%.dll %sources% 2> %testname%.err + do! ``fail fsc 2> a`` """%s --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%s.dll""" cfg.fsc_flags testname sources (sprintf "%s.err" testname) + + // %FSDIFF% %testname%.err %testname%.bsl > %testname%.diff + let! testnameDiff = fsdiff (sprintf "%s.err" testname) (sprintf "%s.bsl" testname) + + // for /f %%c IN (%testname%.diff) do ( + do! match testnameDiff with + | [] -> Success + | l -> + // echo ***** %testname%.err %testname%.bsl differed: a bug or baseline may neeed updating + log "***** %s.err %s.bsl differed: a bug or baseline may neeed updating" testname testname + // set ERRORMSG=%ERRORMSG% %testname%.err %testname%.bsl differ; + NUnitConf.genericError (sprintf "%s.err %s.bsl differ; %A" testname testname l) + + // echo Good, output %testname%.err matched %testname%.bsl + log "Good, output %s.err matched %s.bsl" testname testname + + // "%FSC%" %fsc_flags% --test:ContinueAfterParseFailure --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%testname%.dll %sources% 2> %testname%.vserr + do! ``fail fsc 2> a`` "%s --test:ContinueAfterParseFailure --vserrors --warnaserror --nologo --maxerrors:10000 -a -o:%s.dll" cfg.fsc_flags testname sources (sprintf "%s.vserr" testname) + + // %FSDIFF% %testname%.vserr %BSLFILE% > %testname%.vsdiff + let! testnameDiff = fsdiff (sprintf "%s.vserr" testname) VSBSLFILE + + // for /f %%c IN (%testname%.vsdiff) do ( + do! match testnameDiff with + | [] -> Success + | l -> + // echo ***** %testname%.vserr %BSLFILE% differed: a bug or baseline may neeed updating + log "***** %s.vserr %s differed: a bug or baseline may neeed updating" testname VSBSLFILE + // set ERRORMSG=%ERRORMSG% %testname%.vserr %BSLFILE% differ; + NUnitConf.genericError (sprintf "%s.vserr %s differ; %A" testname VSBSLFILE l) + + log "Good, output %s.vserr matched %s" testname VSBSLFILE + } + +let singleNegTest = + + let doneOK x = + log "Ran fsharp %%~f0 ok" + Success x + + let doneSkipped workDir msg x = + log "Skipped neg run '%s' reason: %s" workDir msg + Success x + + let doneError err msg = + log "%s" msg + Failure err + + let flow cfg testname () = + singleNegTestAux cfg testname + |> Attempt.Run + |> function + | Success () -> doneOK () + | Failure (Skipped msg) -> doneSkipped cfg.Directory msg () + | Failure (GenericError msg) -> doneError (GenericError msg) msg + | Failure (ProcessExecError (_,_,msg) as err) -> doneError err msg + flow + +let singleTestBuildAndRun p = check (attempt { + let cfg = FSharpTestSuite.testConfig () + + do! singleTestBuild cfg p + + do! singleTestRun cfg p + }) + + diff --git a/tests/fsharp/tools/tests_tools.fs b/tests/fsharp/tools/tests_tools.fs index f2d79b7211c..f1a6611c71a 100644 --- a/tests/fsharp/tools/tests_tools.fs +++ b/tests/fsharp/tools/tests_tools.fs @@ -7,56 +7,38 @@ open NUnit.Framework open FSharpTestSuiteTypes open NUnitConf open PlatformHelpers +open SingleTest -let testContext = FSharpTestSuite.testContext +[] +let bundle () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - -module Bundle = - - [] - let bundle () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - - // "%FSC%" %fsc_flags% --progress --standalone -o:test-one-fsharp-module.exe -g test-one-fsharp-module.fs - do! fsc "%s --progress --standalone -o:test-one-fsharp-module.exe -g" cfg.fsc_flags ["test-one-fsharp-module.fs"] + // "%FSC%" %fsc_flags% --progress --standalone -o:test-one-fsharp-module.exe -g test-one-fsharp-module.fs + do! fsc cfg "%s --progress --standalone -o:test-one-fsharp-module.exe -g" cfg.fsc_flags ["test-one-fsharp-module.fs"] - // "%PEVERIFY%" test-one-fsharp-module.exe - do! peverify "test-one-fsharp-module.exe" + // "%PEVERIFY%" test-one-fsharp-module.exe + do! peverify cfg "test-one-fsharp-module.exe" - // "%FSC%" %fsc_flags% -a -o:test_two_fsharp_modules_module_1.dll -g test_two_fsharp_modules_module_1.fs - do! fsc "%s -a -o:test_two_fsharp_modules_module_1.dll -g" cfg.fsc_flags ["test_two_fsharp_modules_module_1.fs"] + // "%FSC%" %fsc_flags% -a -o:test_two_fsharp_modules_module_1.dll -g test_two_fsharp_modules_module_1.fs + do! fsc cfg "%s -a -o:test_two_fsharp_modules_module_1.dll -g" cfg.fsc_flags ["test_two_fsharp_modules_module_1.fs"] - // "%PEVERIFY%" test_two_fsharp_modules_module_1.dll - do! peverify "test_two_fsharp_modules_module_1.dll" + // "%PEVERIFY%" test_two_fsharp_modules_module_1.dll + do! peverify cfg "test_two_fsharp_modules_module_1.dll" - // "%FSC%" %fsc_flags% --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2.exe -g test_two_fsharp_modules_module_2.fs - do! fsc "%s --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2.exe -g" cfg.fsc_flags ["test_two_fsharp_modules_module_2.fs"] + // "%FSC%" %fsc_flags% --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2.exe -g test_two_fsharp_modules_module_2.fs + do! fsc cfg "%s --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2.exe -g" cfg.fsc_flags ["test_two_fsharp_modules_module_2.fs"] - // "%PEVERIFY%" test_two_fsharp_modules_module_2.exe - do! peverify "test_two_fsharp_modules_module_2.exe" + // "%PEVERIFY%" test_two_fsharp_modules_module_2.exe + do! peverify cfg "test_two_fsharp_modules_module_2.exe" - // "%FSC%" %fsc_flags% -a --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2_as_dll.dll -g test_two_fsharp_modules_module_2.fs - do! fsc "%s -a --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2_as_dll.dll -g" cfg.fsc_flags ["test_two_fsharp_modules_module_2.fs"] + // "%FSC%" %fsc_flags% -a --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2_as_dll.dll -g test_two_fsharp_modules_module_2.fs + do! fsc cfg "%s -a --standalone -r:test_two_fsharp_modules_module_1.dll -o:test_two_fsharp_modules_module_2_as_dll.dll -g" cfg.fsc_flags ["test_two_fsharp_modules_module_2.fs"] - // "%PEVERIFY%" test_two_fsharp_modules_module_2_as_dll.dll - do! peverify "test_two_fsharp_modules_module_2_as_dll.dll" + // "%PEVERIFY%" test_two_fsharp_modules_module_2_as_dll.dll + do! peverify cfg "test_two_fsharp_modules_module_2_as_dll.dll" - }) - - - -module Eval = + }) - [] - let eval p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) +[] +let eval p = singleTestBuildAndRun p diff --git a/tests/fsharp/typeProviders/build-typeprovider-test.fs b/tests/fsharp/typeProviders/build-typeprovider-test.fs deleted file mode 100644 index 4fa75cce55e..00000000000 --- a/tests/fsharp/typeProviders/build-typeprovider-test.fs +++ /dev/null @@ -1,43 +0,0 @@ -module BuildTypeProviderTest - -open System -open System.IO -open NUnit.Framework - -open FSharpTestSuiteTypes -open PlatformHelpers -open NUnitConf - -let build (cfg: TestConfig) (dir: string) p = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let del = Commands.rm dir - - // if EXIST provided.dll del provided.dll - del "provided.dll" - - // "%FSC%" --out:provided.dll -a ..\helloWorld\provided.fs - do! fsc "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] - - // if EXIST providedJ.dll del providedJ.dll - del "providedJ.dll" - - // "%FSC%" --out:providedJ.dll -a ..\helloWorld\providedJ.fs - do! fsc "--out:providedJ.dll -a" [".."/"helloWorld"/"providedJ.fs"] - - // if EXIST providedK.dll del providedK.dll - del "providedK.dll" - - // "%FSC%" --out:providedK.dll -a ..\helloWorld\providedK.fs - do! fsc "--out:providedK.dll -a" [".."/"helloWorld"/"providedK.fs"] - - // if EXIST provider.dll del provider.dll - del "provider.dll" - - // "%FSC%" --out:provider.dll -a provider.fsx - do! fsc "--out:provider.dll -a" ["provider.fsx"] - - // call %~d0%~p0..\single-test-build.bat - do! SingleTestBuild.singleTestBuild cfg dir p - - } diff --git a/tests/fsharp/typeProviders/tests_typeProviders.fs b/tests/fsharp/typeProviders/tests_typeProviders.fs index 40b4e2d6b81..97257cd2228 100644 --- a/tests/fsharp/typeProviders/tests_typeProviders.fs +++ b/tests/fsharp/typeProviders/tests_typeProviders.fs @@ -7,296 +7,229 @@ open NUnit.Framework open FSharpTestSuiteTypes open NUnitConf open PlatformHelpers -open FSharpTestSuiteAsserts -let testContext = FSharpTestSuite.testContext +let buildTypeProviderTest (cfg: TestConfig) p = attempt { -module DiamondAssembly = + rm cfg "provided.dll" - let build cfg dir = attempt { + // "%FSC%" --out:provided.dll -a ..\helloWorld\provided.fs + do! fsc cfg "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let del = Commands.rm dir + rm cfg "providedJ.dll" - // if EXIST provider.dll del provider.dll - del "provider.dll" + // "%FSC%" --out:providedJ.dll -a ..\helloWorld\providedJ.fs + do! fsc cfg "--out:providedJ.dll -a" [".."/"helloWorld"/"providedJ.fs"] - // "%FSC%" --out:provided.dll -a ..\helloWorld\provided.fs - do! fsc "%s" "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] - - // "%FSC%" --out:provider.dll -a ..\helloWorld\provider.fsx - do! fsc "%s" "--out:provider.dll -a" [".."/"helloWorld"/"provider.fsx"] + rm cfg "providedK.dll" - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test1.dll -a test1.fsx - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test1.dll -a" cfg.fsc_flags ["test1.fsx"] + // "%FSC%" --out:providedK.dll -a ..\helloWorld\providedK.fs + do! fsc cfg "--out:providedK.dll -a" [".."/"helloWorld"/"providedK.fs"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a.dll -a -r:test1.dll test2a.fsx - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2a.dll -a -r:test1.dll" cfg.fsc_flags ["test2a.fsx"] + rm cfg "provider.dll" - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b.dll -a -r:test1.dll test2b.fsx - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2b.dll -a -r:test1.dll" cfg.fsc_flags ["test2b.fsx"] + // "%FSC%" --out:provider.dll -a provider.fsx + do! fsc cfg "--out:provider.dll -a" ["provider.fsx"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3.exe -r:test1.dll -r:test2a.dll -r:test2b.dll test3.fsx - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test3.exe -r:test1.dll -r:test2a.dll -r:test2b.dll" cfg.fsc_flags ["test3.fsx"] + // call %~d0%~p0..\single-test-build.bat + do! SingleTest.singleTestBuild cfg p () - } + } - let run cfg dir = attempt { +[] +let diamondAssembly () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsi = Printf.ksprintf (Commands.fsi exec cfg.FSI) - let fileguard = (Commands.getfullpath dir) >> FileGuard.create + rm cfg "provider.dll" - // "%PEVERIFY%" test1.dll - do! peverify "test1.dll" + // "%FSC%" --out:provided.dll -a ..\helloWorld\provided.fs + do! fsc cfg "%s" "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] - // "%PEVERIFY%" test2a.dll - do! peverify "test2a.dll" + // "%FSC%" --out:provider.dll -a ..\helloWorld\provider.fsx + do! fsc cfg "%s" "--out:provider.dll -a" [".."/"helloWorld"/"provider.fsx"] - // "%PEVERIFY%" test2b.dll - do! peverify "test2b.dll" + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test1.dll -a test1.fsx + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test1.dll -a" cfg.fsc_flags ["test1.fsx"] - // "%PEVERIFY%" test3.exe - do! peverify "test3.exe" + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a.dll -a -r:test1.dll test2a.fsx + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2a.dll -a -r:test1.dll" cfg.fsc_flags ["test2a.fsx"] - // test3.exe - do! exec ("."/"test3.exe") "" + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b.dll -a -r:test1.dll test2b.fsx + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2b.dll -a -r:test1.dll" cfg.fsc_flags ["test2b.fsx"] + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3.exe -r:test1.dll -r:test2a.dll -r:test2b.dll test3.fsx + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test3.exe -r:test1.dll -r:test2a.dll -r:test2b.dll" cfg.fsc_flags ["test3.fsx"] + do! peverify cfg "test1.dll" - // if exist test.ok (del /f /q test.ok) - use testOkFile = fileguard "test.ok" + do! peverify cfg "test2a.dll" - // %CLIX% "%FSI%" %fsi_flags% test3.fsx && ( - do! fsi "%s" cfg.fsi_flags ["test3.fsx"] + do! peverify cfg "test2b.dll" - // dir test.ok > NUL 2>&1 ) || ( - // @echo :FSI load failed - // set ERRORMSG=%ERRORMSG% FSI load failed; - do! testOkFile |> NUnitConf.checkGuardExists - // ) + do! peverify cfg "test3.exe" - } + do! exec cfg ("."/"test3.exe") "" - [] - let diamondAssembly () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + use testOkFile = fileguard cfg "test.ok" - do! build cfg dir + // "%FSI%" %fsi_flags% test3.fsx && ( + do! fsi cfg "%s" cfg.fsi_flags ["test3.fsx"] - do! run cfg dir + do! testOkFile |> NUnitConf.checkGuardExists - }) - - + }) -module GlobalNamespace = - [] - let globalNamespace () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) +[] +let globalNamespace () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // %CSC% /out:globalNamespaceTP.dll /debug+ /target:library /r:"%FSCOREDLLPATH%" globalNamespaceTP.cs - do! csc """/out:globalNamespaceTP.dll /debug+ /target:library /r:"%s" """ cfg.FSCOREDLLPATH ["globalNamespaceTP.cs"] + // %CSC% /out:globalNamespaceTP.dll /debug+ /target:library /r:"%FSCOREDLLPATH%" globalNamespaceTP.cs + do! csc cfg """/out:globalNamespaceTP.dll /debug+ /target:library /r:"%s" """ cfg.FSCOREDLLPATH ["globalNamespaceTP.cs"] - // "%FSC%" %fsc_flags% /debug+ /r:globalNamespaceTP.dll /optimize- test.fsx - do! fsc "%s /debug+ /r:globalNamespaceTP.dll /optimize-" cfg.fsc_flags ["test.fsx"] + // "%FSC%" %fsc_flags% /debug+ /r:globalNamespaceTP.dll /optimize- test.fsx + do! fsc cfg "%s /debug+ /r:globalNamespaceTP.dll /optimize-" cfg.fsc_flags ["test.fsx"] - }) - - -module HelloWorld = + }) - let build cfg dir p = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let del = Commands.rm dir - let execIn workDir p = Command.exec workDir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc' execIn = Printf.ksprintf (Commands.fsc execIn cfg.FSC) - let mkdir = Commands.mkdir_p dir - let getfullpath = Commands.getfullpath dir +[] +let helloWorld p = check (attempt { + let cfg = FSharpTestSuite.testConfig () - //if EXIST provided.dll del provided.dll - del "provided.dll" + rm cfg "provided.dll" - //if EXIST provided1.dll del provided1.dll - del "provided1.dll" + rm cfg "provided1.dll" - //"%FSC%" --out:provided1.dll -g -a ..\helloWorld\provided.fs - do! fsc "%s" "--out:provided1.dll -g -a" [".."/"helloWorld"/"provided.fs"] + //"%FSC%" --out:provided1.dll -g -a ..\helloWorld\provided.fs + do! fsc cfg "%s" "--out:provided1.dll -g -a" [".."/"helloWorld"/"provided.fs"] - //if EXIST provided2.dll del provided2.dll - del "provided2.dll" + rm cfg "provided2.dll" - //"%FSC%" --out:provided2.dll -g -a ..\helloWorld\provided.fs - do! fsc "%s" "--out:provided2.dll -g -a" [".."/"helloWorld"/"provided.fs"] + //"%FSC%" --out:provided2.dll -g -a ..\helloWorld\provided.fs + do! fsc cfg "%s" "--out:provided2.dll -g -a" [".."/"helloWorld"/"provided.fs"] - //if EXIST provided3.dll del provided3.dll - del "provided3.dll" + rm cfg "provided3.dll" - //"%FSC%" --out:provided3.dll -g -a ..\helloWorld\provided.fs - do! fsc "%s" "--out:provided3.dll -g -a" [".."/"helloWorld"/"provided.fs"] + //"%FSC%" --out:provided3.dll -g -a ..\helloWorld\provided.fs + do! fsc cfg "%s" "--out:provided3.dll -g -a" [".."/"helloWorld"/"provided.fs"] - //if EXIST provided4.dll del provided4.dll - del "provided4.dll" + rm cfg "provided4.dll" - //"%FSC%" --out:provided4.dll -g -a ..\helloWorld\provided.fs - do! fsc "%s" "--out:provided4.dll -g -a" [".."/"helloWorld"/"provided.fs"] + //"%FSC%" --out:provided4.dll -g -a ..\helloWorld\provided.fs + do! fsc cfg "%s" "--out:provided4.dll -g -a" [".."/"helloWorld"/"provided.fs"] - //if EXIST providedJ.dll del providedJ.dll - del "providedJ.dll" + rm cfg "providedJ.dll" - //"%FSC%" --out:providedJ.dll -g -a ..\helloWorld\providedJ.fs - do! fsc "%s" "--out:providedJ.dll -g -a" [".."/"helloWorld"/"providedJ.fs"] + //"%FSC%" --out:providedJ.dll -g -a ..\helloWorld\providedJ.fs + do! fsc cfg "%s" "--out:providedJ.dll -g -a" [".."/"helloWorld"/"providedJ.fs"] - //if EXIST providedK.dll del providedK.dll - del "providedK.dll" + rm cfg "providedK.dll" - //"%FSC%" --out:providedK.dll -g -a ..\helloWorld\providedK.fs - do! fsc "%s" "--out:providedK.dll -g -a" [".."/"helloWorld"/"providedK.fs"] + //"%FSC%" --out:providedK.dll -g -a ..\helloWorld\providedK.fs + do! fsc cfg "%s" "--out:providedK.dll -g -a" [".."/"helloWorld"/"providedK.fs"] - //"%FSC%" --out:providedNullAssemblyName.dll -g -a ..\helloWorld\providedNullAssemblyName.fsx - do! fsc "%s" "--out:providedNullAssemblyName.dll -g -a" [".."/"helloWorld"/"providedNullAssemblyName.fsx"] + //"%FSC%" --out:providedNullAssemblyName.dll -g -a ..\helloWorld\providedNullAssemblyName.fsx + do! fsc cfg "%s" "--out:providedNullAssemblyName.dll -g -a" [".."/"helloWorld"/"providedNullAssemblyName.fsx"] - //call %~d0%~p0\..\build-typeprovider-test.bat - do! BuildTypeProviderTest.build cfg dir p + //call %~d0%~p0\..\build-typeprovider-test.bat + do! buildTypeProviderTest cfg p - //if EXIST provider_with_binary_compat_changes.dll del provider_with_binary_compat_changes.dll - del "provider_with_binary_compat_changes.dll" + rm cfg "provider_with_binary_compat_changes.dll" - //mkdir bincompat1 - mkdir "bincompat1" + //mkdir bincompat1 + mkdir cfg "bincompat1" - //pushd bincompat1 - log "pushd bincompat1" - let bincompat1 = getfullpath "bincompat1" + //pushd bincompat1 + log "pushd bincompat1" + let bincompat1 = getfullpath cfg "bincompat1" - //xcopy /y ..\*.dll . - Directory.EnumerateFiles(bincompat1/"..", "*.dll") - |> Seq.iter (fun from -> Commands.copy_y bincompat1 from ("."/Path.GetFileName(from)) |> ignore) + //xcopy /y ..\*.dll . + Directory.EnumerateFiles(bincompat1/"..", "*.dll") + |> Seq.iter (fun from -> Commands.copy_y bincompat1 from ("."/Path.GetFileName(from)) |> ignore) - //"%FSC%" -g -a -o:test_lib.dll -r:provider.dll ..\test.fsx - do! fsc' (execIn bincompat1) "%s" "-g -a -o:test_lib.dll -r:provider.dll" [".."/"test.fsx"] + //"%FSC%" -g -a -o:test_lib.dll -r:provider.dll ..\test.fsx + do! fscIn cfg bincompat1 "%s" "-g -a -o:test_lib.dll -r:provider.dll" [".."/"test.fsx"] - //"%FSC%" -r:test_lib.dll -r:provider.dll ..\testlib_client.fsx - do! fsc' (execIn bincompat1) "%s" "-r:test_lib.dll -r:provider.dll" [".."/"testlib_client.fsx"] + //"%FSC%" -r:test_lib.dll -r:provider.dll ..\testlib_client.fsx + do! fscIn cfg bincompat1 "%s" "-r:test_lib.dll -r:provider.dll" [".."/"testlib_client.fsx"] - //popd - log "popd" + //popd + log "popd" - //mkdir bincompat2 - mkdir "bincompat2" + //mkdir bincompat2 + mkdir cfg "bincompat2" - //pushd bincompat2 - log "pushd bincompat2" - let bincompat2 = getfullpath "bincompat2" - - //xcopy /y ..\bincompat1\*.dll . - Directory.EnumerateFiles(bincompat2/".."/"bincompat1", "*.dll") - |> Seq.iter (fun from -> Commands.copy_y bincompat2 from ("."/Path.GetFileName(from)) |> ignore) - + //pushd bincompat2 + log "pushd bincompat2" + let bincompat2 = getfullpath cfg "bincompat2" - //REM overwrite provider.dll - //"%FSC%" --define:ADD_AN_OPTIONAL_STATIC_PARAMETER --define:USE_IMPLICIT_ITypeProvider2 --out:provider.dll -g -a ..\provider.fsx - do! fsc' (execIn bincompat2) "%s" "--define:ADD_AN_OPTIONAL_STATIC_PARAMETER --define:USE_IMPLICIT_ITypeProvider2 --out:provider.dll -g -a" [".."/"provider.fsx"] + //xcopy /y ..\bincompat1\*.dll . + Directory.EnumerateFiles(bincompat2/".."/"bincompat1", "*.dll") + |> Seq.iter (fun from -> Commands.copy_y bincompat2 from ("."/Path.GetFileName(from)) |> ignore) - // "%FSC%" -g -a -o:test_lib_recompiled.dll -r:provider.dll ..\test.fsx - do! fsc' (execIn bincompat2) "-g -a -o:test_lib_recompiled.dll -r:provider.dll" [".."/"test.fsx"] - //REM This is the important part of the binary compatibility part of the test: the new provider is being used, but - //REM with a binary that was generated w.r.t. the old provider. The new provider can still resolve the references - //REM generated by the old provider which are stored in the F# metadata for test_lib.dll - //"%FSC%" --define:ADD_AN_OPTIONAL_STATIC_PARAMETER -r:test_lib.dll -r:provider.dll ..\testlib_client.fsx - do! fsc' (execIn bincompat2) "%s" "--define:ADD_AN_OPTIONAL_STATIC_PARAMETER -r:test_lib.dll -r:provider.dll" [".."/"testlib_client.fsx"] + //REM overwrite provider.dll + //"%FSC%" --define:ADD_AN_OPTIONAL_STATIC_PARAMETER --define:USE_IMPLICIT_ITypeProvider2 --out:provider.dll -g -a ..\provider.fsx + do! fscIn cfg bincompat2 "%s" "--define:ADD_AN_OPTIONAL_STATIC_PARAMETER --define:USE_IMPLICIT_ITypeProvider2 --out:provider.dll -g -a" [".."/"provider.fsx"] - //"%PEVERIFY%" provider.dll - do! peverify (bincompat2/"provider.dll") + // "%FSC%" -g -a -o:test_lib_recompiled.dll -r:provider.dll ..\test.fsx + do! fscIn cfg bincompat2 "-g -a -o:test_lib_recompiled.dll -r:provider.dll" [".."/"test.fsx"] - //"%PEVERIFY%" test_lib.dll - do! peverify (bincompat2/"test_lib.dll") + //REM This is the important part of the binary compatibility part of the test: the new provider is being used, but + //REM with a binary that was generated w.r.t. the old provider. The new provider can still resolve the references + //REM generated by the old provider which are stored in the F# metadata for test_lib.dll + //"%FSC%" --define:ADD_AN_OPTIONAL_STATIC_PARAMETER -r:test_lib.dll -r:provider.dll ..\testlib_client.fsx + do! fscIn cfg bincompat2 "%s" "--define:ADD_AN_OPTIONAL_STATIC_PARAMETER -r:test_lib.dll -r:provider.dll" [".."/"testlib_client.fsx"] - // "%PEVERIFY%" test_lib_recompiled.dll - do! peverify (bincompat2/"test_lib_recompiled.dll") + //"%PEVERIFY%" provider.dll + do! peverify cfg (bincompat2/"provider.dll") - //"%PEVERIFY%" testlib_client.exe - do! peverify (bincompat2/"testlib_client.exe") + //"%PEVERIFY%" test_lib.dll + do! peverify cfg (bincompat2/"test_lib.dll") - } + // "%PEVERIFY%" test_lib_recompiled.dll + do! peverify cfg (bincompat2/"test_lib_recompiled.dll") - [] - let helloWorld p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + //"%PEVERIFY%" testlib_client.exe + do! peverify cfg (bincompat2/"testlib_client.exe") - do! build cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p + do! SingleTest.singleTestRun cfg p - }) - - - -module HelloWorldCSharp = - - let build cfg dir = attempt { - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - let del = Commands.rm dir - - // if EXIST magic.dll del magic.dll - del "magic.dll" - - // "%FSC%" --out:magic.dll -a magic.fs --keyfile:magic.snk - do! fsc "%s" "--out:magic.dll -a --keyfile:magic.snk" ["magic.fs "] + }) - // if EXIST provider.dll del provider.dll - del "provider.dll" - // %CSC% /out:provider.dll /target:library "/r:%FSCOREDLLPATH%" /r:magic.dll provider.cs - do! csc """/out:provider.dll /target:library "/r:%s" /r:magic.dll""" cfg.FSCOREDLLPATH ["provider.cs"] - // "%FSC%" %fsc_flags% /debug+ /r:provider.dll /optimize- test.fsx - do! fsc "%s /debug+ /r:provider.dll /optimize-" cfg.fsc_flags ["test.fsx"] +[] +let helloWorldCSharp () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - } + rm cfg "magic.dll" - let run cfg dir = attempt { + // "%FSC%" --out:magic.dll -a magic.fs --keyfile:magic.snk + do! fsc cfg "%s" "--out:magic.dll -a --keyfile:magic.snk" ["magic.fs "] - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" + rm cfg "provider.dll" - // "%PEVERIFY%" magic.dll - do! peverify "magic.dll" + // %CSC% /out:provider.dll /target:library "/r:%FSCOREDLLPATH%" /r:magic.dll provider.cs + do! csc cfg """/out:provider.dll /target:library "/r:%s" /r:magic.dll""" cfg.FSCOREDLLPATH ["provider.cs"] - // "%PEVERIFY%" provider.dll - do! peverify "provider.dll" + // "%FSC%" %fsc_flags% /debug+ /r:provider.dll /optimize- test.fsx + do! fsc cfg "%s /debug+ /r:provider.dll /optimize-" cfg.fsc_flags ["test.fsx"] - // "%PEVERIFY%" test.exe - do! peverify "test.exe" + // "%PEVERIFY%" magic.dll + do! peverify cfg "magic.dll" - // test.exe - do! exec ("."/"test.exe") "" + // "%PEVERIFY%" provider.dll + do! peverify cfg "provider.dll" - } + // "%PEVERIFY%" test.exe + do! peverify cfg "test.exe" - [] - let helloWorldCSharp () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir + // test.exe + do! exec cfg ("."/"test.exe") "" - }) + }) @@ -349,57 +282,48 @@ module NegTests = [] let negTests name = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = FSharpTestSuite.testConfig () + let dir = cfg.Directory do! requireENCulture () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Commands.fsc exec cfg.FSC - let del = Commands.rm dir let fileExists = Commands.fileExists dir >> Option.isSome - let getfullpath = Commands.getfullpath dir - // if EXIST provided.dll del provided.dll - del "provided.dll" + rm cfg "provided.dll" // "%FSC%" --out:provided.dll -a ..\helloWorld\provided.fs - do! fsc "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] + do! fsc cfg "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] - // if EXIST providedJ.dll del providedJ.dll - del "providedJ.dll" + rm cfg "providedJ.dll" // "%FSC%" --out:providedJ.dll -a ..\helloWorld\providedJ.fs - do! fsc "--out:providedJ.dll -a" [".."/"helloWorld"/"providedJ.fs"] + do! fsc cfg "--out:providedJ.dll -a" [".."/"helloWorld"/"providedJ.fs"] - // if EXIST providedK.dll del providedK.dll - del "providedK.dll" + rm cfg "providedK.dll" // "%FSC%" --out:providedK.dll -a ..\helloWorld\providedK.fs - do! fsc "--out:providedK.dll -a" [".."/"helloWorld"/"providedK.fs"] + do! fsc cfg "--out:providedK.dll -a" [".."/"helloWorld"/"providedK.fs"] - // if EXIST provider.dll del provider.dll - del "provider.dll" + rm cfg "provider.dll" // "%FSC%" --out:provider.dll -a provider.fsx - do! fsc "--out:provider.dll -a" ["provider.fsx"] + do! fsc cfg "--out:provider.dll -a" ["provider.fsx"] // "%FSC%" --out:provider_providerAttributeErrorConsume.dll -a providerAttributeError.fsx - do! fsc "--out:provider_providerAttributeErrorConsume.dll -a" ["providerAttributeError.fsx"] + do! fsc cfg "--out:provider_providerAttributeErrorConsume.dll -a" ["providerAttributeError.fsx"] // "%FSC%" --out:provider_ProviderAttribute_EmptyConsume.dll -a providerAttribute_Empty.fsx - do! fsc "--out:provider_ProviderAttribute_EmptyConsume.dll -a" ["providerAttribute_Empty.fsx"] + do! fsc cfg "--out:provider_ProviderAttribute_EmptyConsume.dll -a" ["providerAttribute_Empty.fsx"] - // if EXIST helloWorldProvider.dll del helloWorldProvider.dll - del "helloWorldProvider.dll" + rm cfg "helloWorldProvider.dll" // "%FSC%" --out:helloWorldProvider.dll -a ..\helloWorld\provider.fsx - do! fsc "--out:helloWorldProvider.dll -a" [".."/"helloWorld"/"provider.fsx"] + do! fsc cfg "--out:helloWorldProvider.dll -a" [".."/"helloWorld"/"provider.fsx"] - // if EXIST MostBasicProvider.dll del MostBasicProvider.dll - del "MostBasicProvider.dll" + rm cfg "MostBasicProvider.dll" // "%FSC%" --out:MostBasicProvider.dll -a MostBasicProvider.fsx - do! fsc "--out:MostBasicProvider.dll -a" ["MostBasicProvider.fsx"] + do! fsc cfg "--out:MostBasicProvider.dll -a" ["MostBasicProvider.fsx"] //REVIEW use testfixture setup to run this code ---^ only once? @@ -415,7 +339,7 @@ module NegTests = let dirp = (dir |> Commands.pathAddBackslash) do File.ReadAllText(sprintf "%s%s.%sbslpp" dirp name pref) - .Replace("", getfullpath (sprintf "provider_%s.dll" name)) + .Replace("", getfullpath cfg (sprintf "provider_%s.dll" name)) .Replace("",sprintf "file:///%s" dirp) |> fun txt -> File.WriteAllText(sprintf "%s%s.%sbsl" dirp name pref,txt) } @@ -425,7 +349,7 @@ module NegTests = // "%FSC%" --define:%1 --out:provider_%1.dll -a provider.fsx do! if name = "ProviderAttribute_EmptyConsume" || name = "providerAttributeErrorConsume" then Success () - else fsc (sprintf "--define:%s --out:provider_%s.dll -a" name name) ["provider.fsx"] + else fsc cfg "--define:%s --out:provider_%s.dll -a" name name ["provider.fsx"] // :RunTest // if EXIST %1.bslpp call :Preprocess "%1" "" @@ -439,7 +363,7 @@ module NegTests = // :DoRunTest // call ..\..\single-neg-test.bat %1 //let cfg2 = {cfg with fsc_flags = sprintf "%s -r:provider_%s.dll" cfg.fsc_flags name } - do! SingleNegTest.singleNegTest cfg dir name + do! SingleTest.singleNegTest cfg name } @@ -458,114 +382,85 @@ module NegTests = }) -module SplitAssembly = - - [] - let splitAssembly p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) +[] +let splitAssembly p = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // "%FSC%" --out:provider.dll -a provider.fs - do! fsc "--out:provider.dll -a" ["provider.fs"] + // "%FSC%" --out:provider.dll -a provider.fs + do! fsc cfg "--out:provider.dll -a" ["provider.fs"] - // "%FSC%" --out:providerDesigner.dll -a providerDesigner.fsx - do! fsc "--out:providerDesigner.dll -a" ["providerDesigner.fsx"] + // "%FSC%" --out:providerDesigner.dll -a providerDesigner.fsx + do! fsc cfg "--out:providerDesigner.dll -a" ["providerDesigner.fsx"] - do! SingleTestBuild.singleTestBuild cfg dir p + do! SingleTest.singleTestBuild cfg p - do! SingleTestRun.singleTestRun cfg dir p - }) - - - -module WedgeAssembly = + do! SingleTest.singleTestRun cfg p + }) - let build cfg dir = attempt { - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let del = Commands.rm dir - // if EXIST provider.dll del provider.dll - del "provider.dll" +[] +let wedgeAssembly () = check (attempt { + let cfg = FSharpTestSuite.testConfig () - // if EXIST provided.dll del provided.dll - del "provided.dll" + rm cfg "provider.dll" - // "%FSC%" --out:provided.dll -a ..\helloWorld\provided.fs - do! fsc "%s" "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] - - // if EXIST providedJ.dll del providedJ.dll - del "providedJ.dll" + rm cfg "provided.dll" - // "%FSC%" --out:providedJ.dll -a ..\helloWorld\providedJ.fs - do! fsc "%s" "--out:providedJ.dll -a" [".."/"helloWorld"/"providedJ.fs"] + // "%FSC%" --out:provided.dll -a ..\helloWorld\provided.fs + do! fsc cfg "%s" "--out:provided.dll -a" [".."/"helloWorld"/"provided.fs"] - // if EXIST providedK.dll del providedK.dll - del "providedK.dll" - - // "%FSC%" --out:providedK.dll -a ..\helloWorld\providedK.fs - do! fsc "%s" "--out:providedK.dll -a" [".."/"helloWorld"/"providedK.fs"] + rm cfg "providedJ.dll" - // "%FSC%" --out:provider.dll -a ..\helloWorld\provider.fsx - do! fsc "%s" "--out:provider.dll -a" [".."/"helloWorld"/"provider.fsx"] + // "%FSC%" --out:providedJ.dll -a ..\helloWorld\providedJ.fs + do! fsc cfg "%s" "--out:providedJ.dll -a" [".."/"helloWorld"/"providedJ.fs"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a.dll -a test2a.fs - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2a.dll -a" cfg.fsc_flags ["test2a.fs"] + rm cfg "providedK.dll" - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b.dll -a test2b.fs - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2b.dll -a" cfg.fsc_flags ["test2b.fs"] + // "%FSC%" --out:providedK.dll -a ..\helloWorld\providedK.fs + do! fsc cfg "%s" "--out:providedK.dll -a" [".."/"helloWorld"/"providedK.fs"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3.exe test3.fsx - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test3.exe" cfg.fsc_flags ["test3.fsx"] + // "%FSC%" --out:provider.dll -a ..\helloWorld\provider.fsx + do! fsc cfg "%s" "--out:provider.dll -a" [".."/"helloWorld"/"provider.fsx"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a-with-sig.dll -a test2a.fsi test2a.fs - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2a-with-sig.dll -a" cfg.fsc_flags ["test2a.fsi"; "test2a.fs"] + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a.dll -a test2a.fs + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2a.dll -a" cfg.fsc_flags ["test2a.fs"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b-with-sig.dll -a test2b.fsi test2b.fs - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2b-with-sig.dll -a" cfg.fsc_flags ["test2b.fsi"; "test2b.fs"] + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b.dll -a test2b.fs + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2b.dll -a" cfg.fsc_flags ["test2b.fs"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3-with-sig.exe --define:SIGS test3.fsx - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test3-with-sig.exe --define:SIGS" cfg.fsc_flags ["test3.fsx"] + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3.exe test3.fsx + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test3.exe" cfg.fsc_flags ["test3.fsx"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a-with-sig-restricted.dll -a test2a-restricted.fsi test2a.fs - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2a-with-sig-restricted.dll -a" cfg.fsc_flags ["test2a-restricted.fsi"; "test2a.fs"] + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a-with-sig.dll -a test2a.fsi test2a.fs + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2a-with-sig.dll -a" cfg.fsc_flags ["test2a.fsi"; "test2a.fs"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b-with-sig-restricted.dll -a test2b-restricted.fsi test2b.fs - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test2b-with-sig-restricted.dll -a"cfg.fsc_flags ["test2b-restricted.fsi"; "test2b.fs"] + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b-with-sig.dll -a test2b.fsi test2b.fs + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2b-with-sig.dll -a" cfg.fsc_flags ["test2b.fsi"; "test2b.fs"] - // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3-with-sig-restricted.exe --define:SIGS_RESTRICTED test3.fsx - do! fsc "%s --debug+ -r:provider.dll --optimize- -o:test3-with-sig-restricted.exe --define:SIGS_RESTRICTED" cfg.fsc_flags ["test3.fsx"] + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3-with-sig.exe --define:SIGS test3.fsx + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test3-with-sig.exe --define:SIGS" cfg.fsc_flags ["test3.fsx"] - } + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2a-with-sig-restricted.dll -a test2a-restricted.fsi test2a.fs + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2a-with-sig-restricted.dll -a" cfg.fsc_flags ["test2a-restricted.fsi"; "test2a.fs"] - let run cfg dir = attempt { + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test2b-with-sig-restricted.dll -a test2b-restricted.fsi test2b.fs + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test2b-with-sig-restricted.dll -a"cfg.fsc_flags ["test2b-restricted.fsi"; "test2b.fs"] - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" + // "%FSC%" %fsc_flags% --debug+ -r:provider.dll --optimize- -o:test3-with-sig-restricted.exe --define:SIGS_RESTRICTED test3.fsx + do! fsc cfg "%s --debug+ -r:provider.dll --optimize- -o:test3-with-sig-restricted.exe --define:SIGS_RESTRICTED" cfg.fsc_flags ["test3.fsx"] - // "%PEVERIFY%" test2a.dll - do! peverify "test2a.dll" + // "%PEVERIFY%" test2a.dll + do! peverify cfg "test2a.dll" - // "%PEVERIFY%" test2b.dll - do! peverify "test2b.dll" + // "%PEVERIFY%" test2b.dll + do! peverify cfg "test2b.dll" - // "%PEVERIFY%" test3.exe - do! peverify "test3.exe" + // "%PEVERIFY%" test3.exe + do! peverify cfg "test3.exe" - // test3.exe - do! exec ("."/"test3.exe") "" + // test3.exe + do! exec cfg ("."/"test3.exe") "" - } - - [] - let wedgeAssembly () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! build cfg dir - - do! run cfg dir - }) + }) diff --git a/tests/fsharp/typecheck/tests_typecheck.fs b/tests/fsharp/typecheck/tests_typecheck.fs index 962892d033b..ae7049c1452 100644 --- a/tests/fsharp/typecheck/tests_typecheck.fs +++ b/tests/fsharp/typecheck/tests_typecheck.fs @@ -7,122 +7,103 @@ open NUnit.Framework open FSharpTestSuiteTypes open NUnitConf open PlatformHelpers - -let testContext = FSharpTestSuite.testContext +open SingleTest module ``Full-rank-arrays`` = [] let ``full-rank-arrays`` p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () + let cfg = FSharpTestSuite.testConfig () - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let csc = Printf.ksprintf (Commands.csc exec cfg.CSC) - // %CSC% /target:library /out:HighRankArrayTests.dll .\Class1.cs - do! csc "/target:library /out:HighRankArrayTests.dll" ["Class1.cs"] + do! csc cfg "/target:library /out:HighRankArrayTests.dll" ["Class1.cs"] - do! SingleTestBuild.singleTestBuild cfg dir p + do! SingleTest.singleTestBuild cfg p - do! SingleTestRun.singleTestRun cfg dir p + do! SingleTest.singleTestRun cfg p }) module Misc = [] - let misc p = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - do! SingleTestBuild.singleTestBuild cfg dir p - - do! SingleTestRun.singleTestRun cfg dir p - }) - + let misc p = singleTestBuildAndRun p module Sigs = [] let sigs () = check (attempt { - let { Directory = dir; Config = cfg } = testContext () - - let exec p = Command.exec dir cfg.EnvironmentVariables { Output = Inherit; Input = None; } p >> checkResult - let fsc = Printf.ksprintf (Commands.fsc exec cfg.FSC) - let peverify = Commands.peverify exec cfg.PEVERIFY "/nologo" - let fsc_flags = cfg.fsc_flags - - let singleNegTest = SingleNegTest.singleNegTest cfg dir - + let cfg = FSharpTestSuite.testConfig () - do! fsc "%s --target:exe -o:pos24.exe" fsc_flags ["pos24.fs"] - do! peverify "pos24.exe" + do! fsc cfg "%s --target:exe -o:pos24.exe" cfg.fsc_flags ["pos24.fs"] + do! peverify cfg "pos24.exe" - do! fsc "%s --target:exe -o:pos23.exe" fsc_flags ["pos23.fs"] - do! peverify "pos23.exe" - do! exec ("."/"pos23.exe") "" + do! fsc cfg "%s --target:exe -o:pos23.exe" cfg.fsc_flags ["pos23.fs"] + do! peverify cfg "pos23.exe" + do! exec cfg ("."/"pos23.exe") "" - do! fsc "%s --target:exe -o:pos20.exe" fsc_flags ["pos20.fs"] - do! peverify "pos20.exe" - do! exec ("."/"pos20.exe") "" + do! fsc cfg "%s --target:exe -o:pos20.exe" cfg.fsc_flags ["pos20.fs"] + do! peverify cfg "pos20.exe" + do! exec cfg ("."/"pos20.exe") "" - do! fsc "%s --target:exe -o:pos19.exe" fsc_flags ["pos19.fs"] - do! peverify "pos19.exe" - do! exec ("."/"pos19.exe") "" + do! fsc cfg "%s --target:exe -o:pos19.exe" cfg.fsc_flags ["pos19.fs"] + do! peverify cfg "pos19.exe" + do! exec cfg ("."/"pos19.exe") "" - do! fsc "%s --target:exe -o:pos18.exe" fsc_flags ["pos18.fs"] - do! peverify "pos18.exe" - do! exec ("."/"pos18.exe") "" + do! fsc cfg "%s --target:exe -o:pos18.exe" cfg.fsc_flags ["pos18.fs"] + do! peverify cfg "pos18.exe" + do! exec cfg ("."/"pos18.exe") "" - do! fsc "%s --target:exe -o:pos16.exe" fsc_flags ["pos16.fs"] - do! peverify "pos16.exe" - do! exec ("."/"pos16.exe") "" + do! fsc cfg "%s --target:exe -o:pos16.exe" cfg.fsc_flags ["pos16.fs"] + do! peverify cfg "pos16.exe" + do! exec cfg ("."/"pos16.exe") "" // "%FSC%" %fsc_flags% --target:exe -o:pos17.exe pos17.fs - do! fsc "%s --target:exe -o:pos17.exe" fsc_flags ["pos17.fs"] + do! fsc cfg "%s --target:exe -o:pos17.exe" cfg.fsc_flags ["pos17.fs"] // "%PEVERIFY%" pos17.exe - do! peverify "pos17.exe" + do! peverify cfg "pos17.exe" // pos17.exe - do! exec ("."/"pos17.exe") "" + do! exec cfg ("."/"pos17.exe") "" // "%FSC%" %fsc_flags% --target:exe -o:pos15.exe pos15.fs - do! fsc "%s --target:exe -o:pos15.exe" fsc_flags ["pos15.fs"] + do! fsc cfg "%s --target:exe -o:pos15.exe" cfg.fsc_flags ["pos15.fs"] // "%PEVERIFY%" pos15.exe - do! peverify "pos15.exe" + do! peverify cfg "pos15.exe" // pos15.exe - do! exec ("."/"pos15.exe") "" + do! exec cfg ("."/"pos15.exe") "" // "%FSC%" %fsc_flags% --target:exe -o:pos14.exe pos14.fs - do! fsc "%s --target:exe -o:pos14.exe" fsc_flags ["pos14.fs"] + do! fsc cfg "%s --target:exe -o:pos14.exe" cfg.fsc_flags ["pos14.fs"] // "%PEVERIFY%" pos14.exe - do! peverify "pos14.exe" + do! peverify cfg "pos14.exe" // pos14.exe - do! exec ("."/"pos14.exe") "" + do! exec cfg ("."/"pos14.exe") "" // "%FSC%" %fsc_flags% --target:exe -o:pos13.exe pos13.fs - do! fsc "%s --target:exe -o:pos13.exe" fsc_flags ["pos13.fs"] + do! fsc cfg "%s --target:exe -o:pos13.exe" cfg.fsc_flags ["pos13.fs"] // "%PEVERIFY%" pos13.exe - do! peverify "pos13.exe" + do! peverify cfg "pos13.exe" // pos13.exe - do! exec ("."/"pos13.exe") "" + do! exec cfg ("."/"pos13.exe") "" // "%FSC%" %fsc_flags% -a -o:pos12.dll pos12.fs - do! fsc "%s -a -o:pos12.dll" fsc_flags ["pos12.fs"] + do! fsc cfg "%s -a -o:pos12.dll" cfg.fsc_flags ["pos12.fs"] // "%FSC%" %fsc_flags% -a -o:pos11.dll pos11.fs - do! fsc "%s -a -o:pos11.dll" fsc_flags ["pos11.fs"] + do! fsc cfg "%s -a -o:pos11.dll" cfg.fsc_flags ["pos11.fs"] // "%FSC%" %fsc_flags% -a -o:pos10.dll pos10.fs - do! fsc "%s -a -o:pos10.dll" fsc_flags ["pos10.fs"] + do! fsc cfg "%s -a -o:pos10.dll" cfg.fsc_flags ["pos10.fs"] // "%PEVERIFY%" pos10.dll - do! peverify "pos10.dll" + do! peverify cfg "pos10.dll" // "%FSC%" %fsc_flags% -a -o:pos09.dll pos09.fs - do! fsc "%s -a -o:pos09.dll" fsc_flags ["pos09.fs"] + do! fsc cfg "%s -a -o:pos09.dll" cfg.fsc_flags ["pos09.fs"] // "%PEVERIFY%" pos09.dll - do! peverify "pos09.dll" + do! peverify cfg "pos09.dll" do! attempt.For (["neg97"; "neg96"; "neg95"; "neg94"; "neg93"; "neg92"; "neg91"; "neg90"; "neg89"; "neg88"; @@ -130,63 +111,63 @@ module Sigs = "neg74"; "neg73"; "neg72"; "neg71"; "neg70"; "neg69"; "neg68"; "neg67"; "neg66"; "neg65"; "neg64"; "neg61"; "neg63"; "neg62"; "neg20"; "neg24"; "neg32"; "neg37"; "neg37_a"; "neg60"; "neg59"; "neg58"; "neg57"; "neg56"; "neg56_a"; "neg56_b"; "neg55"; "neg54"; "neg53"; "neg52"; "neg51"; "neg50"; "neg49"; "neg48"; "neg47"; "neg46"; "neg10"; "neg10_a"; "neg45"; - "neg44"; "neg43"; "neg38"; "neg39"; "neg40"; "neg41"; "neg42"], singleNegTest) + "neg44"; "neg43"; "neg38"; "neg39"; "neg40"; "neg41"; "neg42"], singleNegTest cfg) // "%FSC%" %fsc_flags% -a -o:pos07.dll pos07.fs - do! fsc "%s -a -o:pos07.dll" fsc_flags ["pos07.fs"] + do! fsc cfg "%s -a -o:pos07.dll" cfg.fsc_flags ["pos07.fs"] // "%PEVERIFY%" pos07.dll - do! peverify "pos07.dll" + do! peverify cfg "pos07.dll" // "%FSC%" %fsc_flags% -a -o:pos08.dll pos08.fs - do! fsc "%s -a -o:pos08.dll" fsc_flags ["pos08.fs"] + do! fsc cfg "%s -a -o:pos08.dll" cfg.fsc_flags ["pos08.fs"] // "%PEVERIFY%" pos08.dll - do! peverify "pos08.dll" + do! peverify cfg "pos08.dll" // "%FSC%" %fsc_flags% -a -o:pos06.dll pos06.fs - do! fsc "%s -a -o:pos06.dll" fsc_flags ["pos06.fs"] + do! fsc cfg "%s -a -o:pos06.dll" cfg.fsc_flags ["pos06.fs"] // "%PEVERIFY%" pos06.dll - do! peverify "pos06.dll" + do! peverify cfg "pos06.dll" // "%FSC%" %fsc_flags% -a -o:pos03.dll pos03.fs - do! fsc "%s -a -o:pos03.dll" fsc_flags ["pos03.fs"] + do! fsc cfg "%s -a -o:pos03.dll" cfg.fsc_flags ["pos03.fs"] // "%PEVERIFY%" pos03.dll - do! peverify "pos03.dll" + do! peverify cfg "pos03.dll" // "%FSC%" %fsc_flags% -a -o:pos03a.dll pos03a.fsi pos03a.fs - do! fsc "%s -a -o:pos03a.dll" fsc_flags ["pos03a.fsi"; "pos03a.fs"] + do! fsc cfg "%s -a -o:pos03a.dll" cfg.fsc_flags ["pos03a.fsi"; "pos03a.fs"] // "%PEVERIFY%" pos03a.dll - do! peverify "pos03a.dll" + do! peverify cfg "pos03a.dll" do! attempt.For(["neg34"; "neg33"; "neg30"; "neg31"; "neg29"; "neg28"; "neg07"; "neg_byref_20"; "neg_byref_1"; "neg_byref_2"; "neg_byref_3"; "neg_byref_4"; "neg_byref_5"; "neg_byref_6"; "neg_byref_7"; "neg_byref_8"; "neg_byref_10"; "neg_byref_11"; "neg_byref_12"; "neg_byref_13"; "neg_byref_14"; "neg_byref_15"; "neg_byref_16"; "neg_byref_17"; "neg_byref_18"; "neg_byref_19"; "neg_byref_21"; "neg_byref_22"; "neg_byref_23"; "neg36"; "neg17"; "neg26"; "neg27"; "neg25"; "neg03"; "neg23"; "neg22"; "neg21"; "neg04"; "neg05"; "neg06"; "neg06_a"; "neg06_b"; "neg08"; "neg09"; - "neg11"; "neg12"; "neg13"; "neg14"; "neg16"; "neg18"; "neg19"; "neg01"; "neg02"; "neg15" ], singleNegTest) + "neg11"; "neg12"; "neg13"; "neg14"; "neg16"; "neg18"; "neg19"; "neg01"; "neg02"; "neg15" ], singleNegTest cfg) // echo Some random positive cases found while developing the negative tests // "%FSC%" %fsc_flags% -a -o:pos01a.dll pos01a.fsi pos01a.fs - do! fsc "%s -a -o:pos01a.dll" fsc_flags ["pos01a.fsi"; "pos01a.fs"] + do! fsc cfg "%s -a -o:pos01a.dll" cfg.fsc_flags ["pos01a.fsi"; "pos01a.fs"] // "%PEVERIFY%" pos01a.dll - do! peverify "pos01a.dll" + do! peverify cfg "pos01a.dll" // "%FSC%" %fsc_flags% -a -o:pos02.dll pos02.fs - do! fsc "%s -a -o:pos02.dll" fsc_flags ["pos02.fs"] + do! fsc cfg "%s -a -o:pos02.dll" cfg.fsc_flags ["pos02.fs"] // "%PEVERIFY%" pos02.dll - do! peverify "pos02.dll" + do! peverify cfg "pos02.dll" // call ..\..\single-neg-test.bat neg35 - do! singleNegTest "neg35" + do! singleNegTest cfg "neg35" // "%FSC%" %fsc_flags% -a -o:pos05.dll pos05.fs - do! fsc "%s -a -o:pos05.dll" fsc_flags ["pos05.fs"] + do! fsc cfg "%s -a -o:pos05.dll" cfg.fsc_flags ["pos05.fs"] }) diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04.il.bsl deleted file mode 100644 index 1f8e155f62f..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04.il.bsl +++ /dev/null @@ -1,421 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v4.0.30319 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 4:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:0:0:0 -} -.assembly CompiledNameAttribute04 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.CompiledNameAttribute04 -{ - // Offset: 0x00000000 Length: 0x00000CFD -} -.mresource public FSharpOptimizationData.CompiledNameAttribute04 -{ - // Offset: 0x00000D08 Length: 0x000002CB -} -.module CompiledNameAttribute04.exe -// MVID: {4BEB27DA-34DF-584F-A745-0383DA27EB4B} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x002C0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed CompiledNameAttribute04 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi serializable nested public C - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.AbstractClassAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 A1(int32 A_1, - int32 A_2) cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - } // end of method C::A1 - - .method public hidebysig abstract virtual - instance int32 A2(int32 A_1) cil managed - { - } // end of method C::A2 - - .method public specialname rtspecialname - instance void .ctor() cil managed - { - // Code size 10 (0xa) - .maxstack 3 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 20,20 : 6,7 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: pop - IL_0008: nop - IL_0009: ret - } // end of method C::.ctor - - .method public specialname instance int32 - get_P() cil managed - { - // Code size 3 (0x3) - .maxstack 3 - .line 21,21 : 19,20 - IL_0000: nop - IL_0001: ldc.i4.1 - IL_0002: ret - } // end of method C::get_P - - .method public instance int32 M1(int32 x, - int32 y) cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - // Code size 5 (0x5) - .maxstack 4 - .line 22,22 : 24,29 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: ldarg.2 - IL_0003: add - IL_0004: ret - } // end of method C::M1 - - .method public instance !!a M2(!!a x) cil managed - { - .custom instance void [mscorlib]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 3 (0x3) - .maxstack 3 - .line 24,24 : 22,23 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: ret - } // end of method C::M2 - - .property instance int32 P() - { - .get instance int32 CompiledNameAttribute04/C::get_P() - } // end of property C::P - } // end of class C - - .class interface abstract auto ansi serializable nested public IInterface - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 SomeMethod(int32 A_1) cil managed - { - .custom instance void [mscorlib]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) - } // end of method IInterface::SomeMethod - - } // end of class IInterface - - .class sequential ansi serializable sealed nested public S - extends [mscorlib]System.ValueType - implements class [mscorlib]System.IEquatable`1, - [mscorlib]System.Collections.IStructuralEquatable, - class [mscorlib]System.IComparable`1, - [mscorlib]System.IComparable, - [mscorlib]System.Collections.IStructuralComparable - { - .pack 0 - .size 1 - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig virtual final - instance int32 CompareTo(valuetype CompiledNameAttribute04/S obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 6 (0x6) - .maxstack 3 - .locals init ([0] valuetype CompiledNameAttribute04/S& V_0) - .line 37,37 : 6,7 - IL_0000: nop - IL_0001: ldarga.s obj - IL_0003: stloc.0 - IL_0004: ldc.i4.0 - IL_0005: ret - } // end of method S::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 4 - .line 37,37 : 6,7 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: unbox.any CompiledNameAttribute04/S - IL_0008: call instance int32 CompiledNameAttribute04/S::CompareTo(valuetype CompiledNameAttribute04/S) - IL_000d: ret - } // end of method S::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [mscorlib]System.Collections.IComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 3 - .locals init ([0] valuetype CompiledNameAttribute04/S V_0, - [1] valuetype CompiledNameAttribute04/S& V_1) - .line 37,37 : 6,7 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: unbox.any CompiledNameAttribute04/S - IL_0007: stloc.0 - IL_0008: ldloca.s V_0 - IL_000a: stloc.1 - IL_000b: ldc.i4.0 - IL_000c: ret - } // end of method S::CompareTo - - .method public hidebysig virtual final - instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 3 (0x3) - .maxstack 3 - .line 37,37 : 6,7 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ret - } // end of method S::GetHashCode - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 4 - .line 37,37 : 6,7 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: call instance int32 CompiledNameAttribute04/S::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method S::GetHashCode - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 3 - .locals init (valuetype CompiledNameAttribute04/S V_0, - valuetype CompiledNameAttribute04/S& V_1) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0007: brtrue.s IL_000b - - IL_0009: br.s IL_0017 - - IL_000b: ldarg.1 - IL_000c: unbox.any CompiledNameAttribute04/S - IL_0011: stloc.0 - IL_0012: ldloca.s V_0 - IL_0014: stloc.1 - IL_0015: ldc.i4.1 - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method S::Equals - - .method public instance !!a M1(!!a x) cil managed - { - .custom instance void [mscorlib]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 3 (0x3) - .maxstack 3 - .line 40,40 : 24,25 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: ret - } // end of method S::M1 - - .method public hidebysig virtual final - instance bool Equals(valuetype CompiledNameAttribute04/S obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 6 (0x6) - .maxstack 3 - .locals init ([0] valuetype CompiledNameAttribute04/S& V_0) - .line 37,37 : 6,7 - IL_0000: nop - IL_0001: ldarga.s obj - IL_0003: stloc.0 - IL_0004: ldc.i4.1 - IL_0005: ret - } // end of method S::Equals - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 28 (0x1c) - .maxstack 4 - .locals init (valuetype CompiledNameAttribute04/S V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0007: brtrue.s IL_000b - - IL_0009: br.s IL_001a - - IL_000b: ldarg.1 - IL_000c: unbox.any CompiledNameAttribute04/S - IL_0011: stloc.0 - IL_0012: ldarg.0 - IL_0013: ldloc.0 - IL_0014: call instance bool CompiledNameAttribute04/S::Equals(valuetype CompiledNameAttribute04/S) - IL_0019: ret - - IL_001a: ldc.i4.0 - IL_001b: ret - } // end of method S::Equals - - } // end of class S - - .class interface abstract auto ansi serializable nested public ITestInterface - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 M(int32 A_1) cil managed - { - } // end of method ITestInterface::M - - } // end of class ITestInterface - - .class auto autochar serializable sealed nested assembly beforefieldinit specialname a@49 - extends [mscorlib]System.Object - implements CompiledNameAttribute04/ITestInterface - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor() cil managed - { - // Code size 10 (0xa) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call instance void [mscorlib]System.Object::.ctor() - IL_0007: ldarg.0 - IL_0008: pop - IL_0009: ret - } // end of method a@49::.ctor - - .method public hidebysig virtual instance int32 - M(int32 A_1) cil managed - { - .custom instance void [mscorlib]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 5 (0x5) - .maxstack 6 - .line 51,51 : 33,38 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: ldc.i4.1 - IL_0003: add - IL_0004: ret - } // end of method a@49::M - - } // end of class a@49 - - .method public static int32 f1(int32 x, - int32 y) cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - // Code size 5 (0x5) - .maxstack 4 - .line 16,16 : 14,19 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: add - IL_0004: ret - } // end of method CompiledNameAttribute04::f1 - - .method public static !!a f2(!!a x) cil managed - { - // Code size 3 (0x3) - .maxstack 3 - .line 17,17 : 12,13 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ret - } // end of method CompiledNameAttribute04::f2 - - .method public specialname static class CompiledNameAttribute04/ITestInterface - get_a() cil managed - { - // Code size 6 (0x6) - .maxstack 4 - IL_0000: ldsfld class CompiledNameAttribute04/ITestInterface ''.$CompiledNameAttribute04::a@49 - IL_0005: ret - } // end of method CompiledNameAttribute04::get_a - - .property class CompiledNameAttribute04/ITestInterface - a() - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) - .get class CompiledNameAttribute04/ITestInterface CompiledNameAttribute04::get_a() - } // end of property CompiledNameAttribute04::a -} // end of class CompiledNameAttribute04 - -.class private abstract auto ansi sealed ''.$CompiledNameAttribute04 - extends [mscorlib]System.Object -{ - .field static assembly class CompiledNameAttribute04/ITestInterface a@49 - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static void main@() cil managed - { - .entrypoint - // Code size 14 (0xe) - .maxstack 4 - .locals init (class CompiledNameAttribute04/ITestInterface V_0) - IL_0000: nop - IL_0001: newobj instance void CompiledNameAttribute04/a@49::.ctor() - IL_0006: dup - IL_0007: stsfld class CompiledNameAttribute04/ITestInterface ''.$CompiledNameAttribute04::a@49 - IL_000c: stloc.0 - IL_000d: ret - } // end of method $CompiledNameAttribute04::main@ - -} // end of class ''.$CompiledNameAttribute04 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest1.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest1.il.bsl deleted file mode 100644 index 0ab8c31fdca..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest1.il.bsl +++ /dev/null @@ -1,263 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly ListExpressionSteppingTest1 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ListExpressionSteppingTest1 -{ - // Offset: 0x00000000 Length: 0x0000024F -} -.mresource public FSharpOptimizationData.ListExpressionSteppingTest1 -{ - // Offset: 0x00000258 Length: 0x000000AF -} -.module ListExpressionSteppingTest1.dll -// MVID: {4D94A5B6-6A43-AEBD-A745-0383B6A5944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x001B0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed ListExpressionSteppingTest1 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public ListExpressionSteppingTest1 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f0@5 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(int32 pc, - int32 current) cil managed - { - // Code size 21 (0x15) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::pc - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::current - IL_000e: ldarg.0 - IL_000f: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() - IL_0014: ret - } // end of method f0@5::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed - { - // Code size 66 (0x42) - .maxstack 6 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_0017, - IL_0019) - IL_0015: br.s IL_0021 - - IL_0017: br.s IL_001b - - IL_0019: br.s IL_001e - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001b: nop - IL_001c: br.s IL_0032 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001e: nop - IL_001f: br.s IL_0039 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0021: nop - IL_0022: ldarg.0 - IL_0023: ldc.i4.1 - IL_0024: stfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::pc - .line 5,5 : 11,18 - IL_0029: ldarg.0 - IL_002a: ldc.i4.1 - IL_002b: stfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::current - IL_0030: ldc.i4.1 - IL_0031: ret - - IL_0032: ldarg.0 - IL_0033: ldc.i4.2 - IL_0034: stfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::pc - IL_0039: ldarg.0 - IL_003a: ldc.i4.0 - IL_003b: stfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::current - IL_0040: ldc.i4.0 - IL_0041: ret - } // end of method f0@5::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.2 - IL_0003: stfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::pc - IL_0008: ret - } // end of method f0@5::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 46 (0x2e) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::pc - IL_0007: switch ( - IL_001a, - IL_001c, - IL_001e) - IL_0018: br.s IL_0029 - - IL_001a: br.s IL_0020 - - IL_001c: br.s IL_0023 - - IL_001e: br.s IL_0026 - - IL_0020: nop - IL_0021: br.s IL_002c - - IL_0023: nop - IL_0024: br.s IL_002a - - IL_0026: nop - IL_0027: br.s IL_002c - - IL_0029: nop - IL_002a: ldc.i4.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method f0@5::get_CheckClose - - .method public strict virtual instance int32 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::current - IL_0007: ret - } // end of method f0@5::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::.ctor(int32, - int32) - IL_0008: ret - } // end of method f0@5::GetFreshEnumerator - - } // end of class f0@5 - - .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - f0() cil managed - { - // Code size 16 (0x10) - .maxstack 4 - .line 5,5 : 9,20 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void ListExpressionSteppingTest1/ListExpressionSteppingTest1/f0@5::.ctor(int32, - int32) - IL_0008: tail. - IL_000a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_000f: ret - } // end of method ListExpressionSteppingTest1::f0 - - } // end of class ListExpressionSteppingTest1 - -} // end of class ListExpressionSteppingTest1 - -.class private abstract auto ansi sealed ''.$ListExpressionSteppingTest1 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 8 (0x8) - .maxstack 3 - .line 6,6 : 13,17 - IL_0000: nop - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest1/ListExpressionSteppingTest1::f0() - IL_0006: pop - IL_0007: ret - } // end of method $ListExpressionSteppingTest1::.cctor - -} // end of class ''.$ListExpressionSteppingTest1 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest2.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest2.il.bsl deleted file mode 100644 index 660e67d8f11..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest2.il.bsl +++ /dev/null @@ -1,300 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly ListExpressionSteppingTest2 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ListExpressionSteppingTest2 -{ - // Offset: 0x00000000 Length: 0x0000024F -} -.mresource public FSharpOptimizationData.ListExpressionSteppingTest2 -{ - // Offset: 0x00000258 Length: 0x000000AF -} -.module ListExpressionSteppingTest2.dll -// MVID: {4D94A607-041C-2A21-A745-038307A6944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x004A0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed ListExpressionSteppingTest2 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public ListExpressionSteppingTest2 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f1@5 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(int32 pc, - int32 current) cil managed - { - // Code size 21 (0x15) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::pc - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::current - IL_000e: ldarg.0 - IL_000f: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() - IL_0014: ret - } // end of method f1@5::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed - { - // Code size 123 (0x7b) - .maxstack 6 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_001b, - IL_001d, - IL_001f) - IL_0019: br.s IL_002a - - IL_001b: br.s IL_0021 - - IL_001d: br.s IL_0024 - - IL_001f: br.s IL_0027 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0021: nop - IL_0022: br.s IL_004b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0024: nop - IL_0025: br.s IL_006b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0027: nop - IL_0028: br.s IL_0072 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_002a: nop - .line 5,5 : 11,26 - IL_002b: ldstr "hello" - IL_0030: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0035: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_003a: pop - IL_003b: ldarg.0 - IL_003c: ldc.i4.1 - IL_003d: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::pc - .line 6,6 : 11,18 - IL_0042: ldarg.0 - IL_0043: ldc.i4.1 - IL_0044: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::current - IL_0049: ldc.i4.1 - IL_004a: ret - - .line 7,7 : 11,28 - IL_004b: ldstr "goodbye" - IL_0050: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0055: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_005a: pop - IL_005b: ldarg.0 - IL_005c: ldc.i4.2 - IL_005d: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::pc - .line 8,8 : 11,18 - IL_0062: ldarg.0 - IL_0063: ldc.i4.2 - IL_0064: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::current - IL_0069: ldc.i4.1 - IL_006a: ret - - IL_006b: ldarg.0 - IL_006c: ldc.i4.3 - IL_006d: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::pc - IL_0072: ldarg.0 - IL_0073: ldc.i4.0 - IL_0074: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::current - IL_0079: ldc.i4.0 - IL_007a: ret - } // end of method f1@5::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.3 - IL_0003: stfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::pc - IL_0008: ret - } // end of method f1@5::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 57 (0x39) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::pc - IL_0007: switch ( - IL_001e, - IL_0020, - IL_0022, - IL_0024) - IL_001c: br.s IL_0032 - - IL_001e: br.s IL_0026 - - IL_0020: br.s IL_0029 - - IL_0022: br.s IL_002c - - IL_0024: br.s IL_002f - - IL_0026: nop - IL_0027: br.s IL_0037 - - IL_0029: nop - IL_002a: br.s IL_0035 - - IL_002c: nop - IL_002d: br.s IL_0033 - - IL_002f: nop - IL_0030: br.s IL_0037 - - IL_0032: nop - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldc.i4.0 - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - } // end of method f1@5::get_CheckClose - - .method public strict virtual instance int32 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::current - IL_0007: ret - } // end of method f1@5::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::.ctor(int32, - int32) - IL_0008: ret - } // end of method f1@5::GetFreshEnumerator - - } // end of class f1@5 - - .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - f1() cil managed - { - // Code size 16 (0x10) - .maxstack 4 - .line 5,8 : 9,19 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void ListExpressionSteppingTest2/ListExpressionSteppingTest2/f1@5::.ctor(int32, - int32) - IL_0008: tail. - IL_000a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_000f: ret - } // end of method ListExpressionSteppingTest2::f1 - - } // end of class ListExpressionSteppingTest2 - -} // end of class ListExpressionSteppingTest2 - -.class private abstract auto ansi sealed ''.$ListExpressionSteppingTest2 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 8 (0x8) - .maxstack 3 - .line 10,10 : 13,17 - IL_0000: nop - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest2/ListExpressionSteppingTest2::f1() - IL_0006: pop - IL_0007: ret - } // end of method $ListExpressionSteppingTest2::.cctor - -} // end of class ''.$ListExpressionSteppingTest2 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest3.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest3.il.bsl deleted file mode 100644 index c2fd022c96e..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest3.il.bsl +++ /dev/null @@ -1,300 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly ListExpressionSteppingTest3 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ListExpressionSteppingTest3 -{ - // Offset: 0x00000000 Length: 0x0000025F -} -.mresource public FSharpOptimizationData.ListExpressionSteppingTest3 -{ - // Offset: 0x00000268 Length: 0x000000AF -} -.module ListExpressionSteppingTest3.dll -// MVID: {4D94A628-C7B9-F1A3-A745-038328A6944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x003A0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed ListExpressionSteppingTest3 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public ListExpressionSteppingTest3 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f2@6 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1> - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x, - int32 pc, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 current) cil managed - { - // Code size 28 (0x1c) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::x - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld int32 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::pc - IL_000e: ldarg.0 - IL_000f: ldarg.3 - IL_0010: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::current - IL_0015: ldarg.0 - IL_0016: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1>::.ctor() - IL_001b: ret - } // end of method f2@6::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1>& next) cil managed - { - // Code size 116 (0x74) - .maxstack 6 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_0017, - IL_0019) - IL_0015: br.s IL_0021 - - IL_0017: br.s IL_001b - - IL_0019: br.s IL_001e - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001b: nop - IL_001c: br.s IL_0061 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001e: nop - IL_001f: br.s IL_006b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0021: nop - .line 6,6 : 17,23 - IL_0022: ldarg.0 - IL_0023: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::x - IL_0028: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_002d: ldc.i4.4 - IL_002e: bge.s IL_0064 - - .line 7,7 : 14,20 - IL_0030: ldarg.0 - IL_0031: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::x - IL_0036: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_003b: nop - .line 8,8 : 14,29 - IL_003c: ldstr "hello" - IL_0041: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0046: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_004b: pop - IL_004c: ldarg.0 - IL_004d: ldc.i4.1 - IL_004e: stfld int32 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::pc - .line 9,9 : 14,21 - IL_0053: ldarg.0 - IL_0054: ldarg.0 - IL_0055: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::x - IL_005a: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::current - IL_005f: ldc.i4.1 - IL_0060: ret - - .line 100001,100001 : 0,0 - IL_0061: nop - IL_0062: br.s IL_0022 - - IL_0064: ldarg.0 - IL_0065: ldc.i4.2 - IL_0066: stfld int32 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::pc - IL_006b: ldarg.0 - IL_006c: ldnull - IL_006d: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::current - IL_0072: ldc.i4.0 - IL_0073: ret - } // end of method f2@6::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.2 - IL_0003: stfld int32 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::pc - IL_0008: ret - } // end of method f2@6::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 46 (0x2e) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::pc - IL_0007: switch ( - IL_001a, - IL_001c, - IL_001e) - IL_0018: br.s IL_0029 - - IL_001a: br.s IL_0020 - - IL_001c: br.s IL_0023 - - IL_001e: br.s IL_0026 - - IL_0020: nop - IL_0021: br.s IL_002c - - IL_0023: nop - IL_0024: br.s IL_002a - - IL_0026: nop - IL_0027: br.s IL_002c - - IL_0029: nop - IL_002a: ldc.i4.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method f2@6::get_CheckClose - - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::current - IL_0007: ret - } // end of method f2@6::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 15 (0xf) - .maxstack 7 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::x - IL_0007: ldc.i4.0 - IL_0008: ldnull - IL_0009: newobj instance void ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_000e: ret - } // end of method f2@6::GetFreshEnumerator - - } // end of class f2@6 - - .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> - f2() cil managed - { - // Code size 24 (0x18) - .maxstack 5 - .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x) - .line 5,5 : 9,22 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0007: stloc.0 - .line 6,9 : 9,23 - IL_0008: ldloc.0 - IL_0009: ldc.i4.0 - IL_000a: ldnull - IL_000b: newobj instance void ListExpressionSteppingTest3/ListExpressionSteppingTest3/f2@6::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0010: tail. - IL_0012: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList>(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0017: ret - } // end of method ListExpressionSteppingTest3::f2 - - } // end of class ListExpressionSteppingTest3 - -} // end of class ListExpressionSteppingTest3 - -.class private abstract auto ansi sealed ''.$ListExpressionSteppingTest3 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 8 (0x8) - .maxstack 3 - .line 11,11 : 13,17 - IL_0000: nop - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> ListExpressionSteppingTest3/ListExpressionSteppingTest3::f2() - IL_0006: pop - IL_0007: ret - } // end of method $ListExpressionSteppingTest3::.cctor - -} // end of class ''.$ListExpressionSteppingTest3 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest4.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest4.il.bsl deleted file mode 100644 index 90d6c813772..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest4.il.bsl +++ /dev/null @@ -1,361 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly ListExpressionSteppingTest4 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ListExpressionSteppingTest4 -{ - // Offset: 0x00000000 Length: 0x0000024F -} -.mresource public FSharpOptimizationData.ListExpressionSteppingTest4 -{ - // Offset: 0x00000258 Length: 0x000000AF -} -.module ListExpressionSteppingTest4.dll -// MVID: {4D94A65D-6192-6D07-A745-03835DA6944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x00790000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed ListExpressionSteppingTest4 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public ListExpressionSteppingTest4 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f3@5 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 y - .field public int32 z - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 y, - int32 z, - int32 pc, - int32 current) cil managed - { - // Code size 44 (0x2c) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::x - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::y - IL_000e: ldarg.0 - IL_000f: ldarg.3 - IL_0010: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::z - IL_0015: ldarg.0 - IL_0016: ldarg.s pc - IL_0018: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::pc - IL_001d: ldarg.0 - IL_001e: ldarg.s current - IL_0020: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::current - IL_0025: ldarg.0 - IL_0026: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() - IL_002b: ret - } // end of method f3@5::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed - { - // Code size 210 (0xd2) - .maxstack 7 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_001b, - IL_001d, - IL_001f) - IL_0019: br.s IL_0030 - - IL_001b: br.s IL_0021 - - IL_001d: br.s IL_0024 - - IL_001f: br.s IL_002a - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0021: nop - IL_0022: br.s IL_007b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0024: nop - IL_0025: br IL_00ad - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_002a: nop - IL_002b: br IL_00c9 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0030: nop - .line 5,5 : 11,24 - IL_0031: ldarg.0 - IL_0032: ldc.i4.0 - IL_0033: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0038: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::x - .line 6,6 : 11,17 - IL_003d: ldarg.0 - IL_003e: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::x - IL_0043: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0048: nop - .line 7,7 : 11,24 - IL_0049: ldarg.0 - IL_004a: ldc.i4.0 - IL_004b: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0050: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::y - .line 8,8 : 11,17 - IL_0055: ldarg.0 - IL_0056: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::y - IL_005b: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0060: nop - IL_0061: ldarg.0 - IL_0062: ldc.i4.1 - IL_0063: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::pc - .line 9,9 : 11,19 - IL_0068: ldarg.0 - IL_0069: ldarg.0 - IL_006a: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::x - IL_006f: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0074: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::current - IL_0079: ldc.i4.1 - IL_007a: ret - - .line 10,10 : 11,26 - IL_007b: ldarg.0 - IL_007c: ldarg.0 - IL_007d: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::x - IL_0082: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0087: ldarg.0 - IL_0088: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::y - IL_008d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0092: add - IL_0093: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::z - IL_0098: ldarg.0 - IL_0099: ldc.i4.2 - IL_009a: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::pc - .line 11,11 : 11,18 - IL_009f: ldarg.0 - IL_00a0: ldarg.0 - IL_00a1: ldfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::z - IL_00a6: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::current - IL_00ab: ldc.i4.1 - IL_00ac: ret - - .line 10,10 : 15,16 - IL_00ad: ldarg.0 - IL_00ae: ldc.i4.0 - IL_00af: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::z - .line 7,7 : 15,16 - IL_00b4: ldarg.0 - IL_00b5: ldnull - IL_00b6: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::y - IL_00bb: ldarg.0 - IL_00bc: ldnull - IL_00bd: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::x - IL_00c2: ldarg.0 - IL_00c3: ldc.i4.3 - IL_00c4: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::pc - IL_00c9: ldarg.0 - IL_00ca: ldc.i4.0 - IL_00cb: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::current - IL_00d0: ldc.i4.0 - IL_00d1: ret - } // end of method f3@5::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.3 - IL_0003: stfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::pc - IL_0008: ret - } // end of method f3@5::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 57 (0x39) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::pc - IL_0007: switch ( - IL_001e, - IL_0020, - IL_0022, - IL_0024) - IL_001c: br.s IL_0032 - - IL_001e: br.s IL_0026 - - IL_0020: br.s IL_0029 - - IL_0022: br.s IL_002c - - IL_0024: br.s IL_002f - - IL_0026: nop - IL_0027: br.s IL_0037 - - IL_0029: nop - IL_002a: br.s IL_0035 - - IL_002c: nop - IL_002d: br.s IL_0033 - - IL_002f: nop - IL_0030: br.s IL_0037 - - IL_0032: nop - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldc.i4.0 - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - } // end of method f3@5::get_CheckClose - - .method public strict virtual instance int32 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::current - IL_0007: ret - } // end of method f3@5::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 12 (0xc) - .maxstack 9 - IL_0000: nop - IL_0001: ldnull - IL_0002: ldnull - IL_0003: ldc.i4.0 - IL_0004: ldc.i4.0 - IL_0005: ldc.i4.0 - IL_0006: newobj instance void ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - int32, - int32) - IL_000b: ret - } // end of method f3@5::GetFreshEnumerator - - } // end of class f3@5 - - .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - f3() cil managed - { - // Code size 19 (0x13) - .maxstack 7 - .line 5,11 : 9,20 - IL_0000: nop - IL_0001: ldnull - IL_0002: ldnull - IL_0003: ldc.i4.0 - IL_0004: ldc.i4.0 - IL_0005: ldc.i4.0 - IL_0006: newobj instance void ListExpressionSteppingTest4/ListExpressionSteppingTest4/f3@5::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - int32, - int32) - IL_000b: tail. - IL_000d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0012: ret - } // end of method ListExpressionSteppingTest4::f3 - - } // end of class ListExpressionSteppingTest4 - -} // end of class ListExpressionSteppingTest4 - -.class private abstract auto ansi sealed ''.$ListExpressionSteppingTest4 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 8 (0x8) - .maxstack 3 - .line 13,13 : 13,17 - IL_0000: nop - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest4/ListExpressionSteppingTest4::f3() - IL_0006: pop - IL_0007: ret - } // end of method $ListExpressionSteppingTest4::.cctor - -} // end of class ''.$ListExpressionSteppingTest4 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest5.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest5.il.bsl deleted file mode 100644 index 7448b276c1f..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest5.il.bsl +++ /dev/null @@ -1,521 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly ListExpressionSteppingTest5 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ListExpressionSteppingTest5 -{ - // Offset: 0x00000000 Length: 0x0000024F -} -.mresource public FSharpOptimizationData.ListExpressionSteppingTest5 -{ - // Offset: 0x00000258 Length: 0x000000AF -} -.module ListExpressionSteppingTest5.dll -// MVID: {4D94A695-E557-77D9-A745-038395A6944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x001A0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed ListExpressionSteppingTest5 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public ListExpressionSteppingTest5 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f4@5 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 y - .field public int32 z - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 y, - int32 z, - int32 pc, - int32 current) cil managed - { - // Code size 44 (0x2c) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::x - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::y - IL_000e: ldarg.0 - IL_000f: ldarg.3 - IL_0010: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::z - IL_0015: ldarg.0 - IL_0016: ldarg.s pc - IL_0018: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - IL_001d: ldarg.0 - IL_001e: ldarg.s current - IL_0020: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::current - IL_0025: ldarg.0 - IL_0026: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() - IL_002b: ret - } // end of method f4@5::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed - { - // Code size 249 (0xf9) - .maxstack 7 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_001f, - IL_0021, - IL_0023, - IL_0025) - IL_001d: br.s IL_0039 - - IL_001f: br.s IL_0027 - - IL_0021: br.s IL_002d - - IL_0023: br.s IL_0030 - - IL_0025: br.s IL_0033 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0027: nop - IL_0028: br IL_00bf - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_002d: nop - IL_002e: br.s IL_007f - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0030: nop - IL_0031: br.s IL_00b1 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0033: nop - IL_0034: br IL_00f0 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0039: nop - .line 5,5 : 11,24 - IL_003a: ldarg.0 - IL_003b: ldc.i4.0 - IL_003c: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0041: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::x - IL_0046: ldarg.0 - IL_0047: ldc.i4.1 - IL_0048: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - .line 7,7 : 15,28 - IL_004d: ldarg.0 - IL_004e: ldc.i4.0 - IL_004f: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0054: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::y - .line 8,8 : 15,21 - IL_0059: ldarg.0 - IL_005a: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::y - IL_005f: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0064: nop - IL_0065: ldarg.0 - IL_0066: ldc.i4.2 - IL_0067: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - .line 9,9 : 15,23 - IL_006c: ldarg.0 - IL_006d: ldarg.0 - IL_006e: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::x - IL_0073: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0078: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::current - IL_007d: ldc.i4.1 - IL_007e: ret - - .line 10,10 : 15,30 - IL_007f: ldarg.0 - IL_0080: ldarg.0 - IL_0081: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::x - IL_0086: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_008b: ldarg.0 - IL_008c: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::y - IL_0091: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0096: add - IL_0097: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::z - IL_009c: ldarg.0 - IL_009d: ldc.i4.3 - IL_009e: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - .line 11,11 : 15,22 - IL_00a3: ldarg.0 - IL_00a4: ldarg.0 - IL_00a5: ldfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::z - IL_00aa: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::current - IL_00af: ldc.i4.1 - IL_00b0: ret - - .line 10,10 : 19,20 - IL_00b1: ldarg.0 - IL_00b2: ldc.i4.0 - IL_00b3: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::z - IL_00b8: ldarg.0 - IL_00b9: ldnull - IL_00ba: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::y - IL_00bf: ldarg.0 - IL_00c0: ldc.i4.4 - IL_00c1: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - .line 13,13 : 14,20 - IL_00c6: ldarg.0 - IL_00c7: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::x - IL_00cc: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_00d1: nop - .line 14,14 : 14,28 - IL_00d2: ldstr "done" - IL_00d7: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_00dc: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_00e1: pop - IL_00e2: ldarg.0 - IL_00e3: ldnull - IL_00e4: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::x - IL_00e9: ldarg.0 - IL_00ea: ldc.i4.4 - IL_00eb: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - IL_00f0: ldarg.0 - IL_00f1: ldc.i4.0 - IL_00f2: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::current - IL_00f7: ldc.i4.0 - IL_00f8: ret - } // end of method f4@5::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 178 (0xb2) - .maxstack 6 - .locals init ([0] class [mscorlib]System.Exception V_0, - [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, - [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 - IL_0000: ldnull - IL_0001: stloc.0 - IL_0002: ldarg.0 - IL_0003: ldfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - IL_0008: ldc.i4.4 - IL_0009: sub - IL_000a: switch ( - IL_0015) - IL_0013: br.s IL_001b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0015: nop - IL_0016: br IL_00a5 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001b: nop - .try - { - IL_001c: ldarg.0 - IL_001d: ldfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - IL_0022: switch ( - IL_003d, - IL_003f, - IL_0041, - IL_0043, - IL_0045) - IL_003b: br.s IL_0056 - - IL_003d: br.s IL_0047 - - IL_003f: br.s IL_004a - - IL_0041: br.s IL_004d - - IL_0043: br.s IL_0050 - - IL_0045: br.s IL_0053 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0047: nop - IL_0048: br.s IL_007f - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_004a: nop - IL_004b: br.s IL_005b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_004d: nop - IL_004e: br.s IL_005a - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0050: nop - IL_0051: br.s IL_0057 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0053: nop - IL_0054: br.s IL_007f - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0056: nop - .line 100001,100001 : 0,0 - IL_0057: nop - IL_0058: br.s IL_005b - - .line 100001,100001 : 0,0 - IL_005a: nop - IL_005b: ldarg.0 - IL_005c: ldc.i4.4 - IL_005d: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - .line 13,13 : 14,20 - IL_0062: ldarg.0 - IL_0063: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::x - IL_0068: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_006d: nop - .line 14,14 : 14,28 - IL_006e: ldstr "done" - IL_0073: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0078: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_007d: pop - .line 100001,100001 : 0,0 - IL_007e: nop - IL_007f: ldarg.0 - IL_0080: ldc.i4.4 - IL_0081: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - IL_0086: ldarg.0 - IL_0087: ldc.i4.0 - IL_0088: stfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::current - IL_008d: ldnull - IL_008e: stloc.1 - IL_008f: leave.s IL_009d - - } // end .try - catch [mscorlib]System.Object - { - IL_0091: castclass [mscorlib]System.Exception - IL_0096: stloc.2 - .line 5,5 : 15,16 - IL_0097: ldloc.2 - IL_0098: stloc.0 - IL_0099: ldnull - IL_009a: stloc.1 - IL_009b: leave.s IL_009d - - .line 100001,100001 : 0,0 - } // end handler - IL_009d: ldloc.1 - IL_009e: pop - .line 100001,100001 : 0,0 - IL_009f: nop - IL_00a0: br IL_0002 - - IL_00a5: ldloc.0 - IL_00a6: ldnull - IL_00a7: cgt.un - IL_00a9: brfalse.s IL_00ad - - IL_00ab: br.s IL_00af - - IL_00ad: br.s IL_00b1 - - .line 100001,100001 : 0,0 - IL_00af: ldloc.0 - IL_00b0: throw - - .line 100001,100001 : 0,0 - IL_00b1: ret - } // end of method f4@5::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 68 (0x44) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::pc - IL_0007: switch ( - IL_0022, - IL_0024, - IL_0026, - IL_0028, - IL_002a) - IL_0020: br.s IL_003b - - IL_0022: br.s IL_002c - - IL_0024: br.s IL_002f - - IL_0026: br.s IL_0032 - - IL_0028: br.s IL_0035 - - IL_002a: br.s IL_0038 - - IL_002c: nop - IL_002d: br.s IL_0042 - - IL_002f: nop - IL_0030: br.s IL_0040 - - IL_0032: nop - IL_0033: br.s IL_003e - - IL_0035: nop - IL_0036: br.s IL_003c - - IL_0038: nop - IL_0039: br.s IL_0042 - - IL_003b: nop - IL_003c: ldc.i4.1 - IL_003d: ret - - IL_003e: ldc.i4.1 - IL_003f: ret - - IL_0040: ldc.i4.1 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret - } // end of method f4@5::get_CheckClose - - .method public strict virtual instance int32 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::current - IL_0007: ret - } // end of method f4@5::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 12 (0xc) - .maxstack 9 - IL_0000: nop - IL_0001: ldnull - IL_0002: ldnull - IL_0003: ldc.i4.0 - IL_0004: ldc.i4.0 - IL_0005: ldc.i4.0 - IL_0006: newobj instance void ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - int32, - int32) - IL_000b: ret - } // end of method f4@5::GetFreshEnumerator - - } // end of class f4@5 - - .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - f4() cil managed - { - // Code size 19 (0x13) - .maxstack 7 - .line 5,14 : 9,30 - IL_0000: nop - IL_0001: ldnull - IL_0002: ldnull - IL_0003: ldc.i4.0 - IL_0004: ldc.i4.0 - IL_0005: ldc.i4.0 - IL_0006: newobj instance void ListExpressionSteppingTest5/ListExpressionSteppingTest5/f4@5::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - int32, - int32) - IL_000b: tail. - IL_000d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0012: ret - } // end of method ListExpressionSteppingTest5::f4 - - } // end of class ListExpressionSteppingTest5 - -} // end of class ListExpressionSteppingTest5 - -.class private abstract auto ansi sealed ''.$ListExpressionSteppingTest5 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 8 (0x8) - .maxstack 3 - .line 16,16 : 13,17 - IL_0000: nop - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest5/ListExpressionSteppingTest5::f4() - IL_0006: pop - IL_0007: ret - } // end of method $ListExpressionSteppingTest5::.cctor - -} // end of class ''.$ListExpressionSteppingTest5 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest6.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest6.il.bsl deleted file mode 100644 index 57fcfe3eef0..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest6.il.bsl +++ /dev/null @@ -1,632 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly ListExpressionSteppingTest6 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ListExpressionSteppingTest6 -{ - // Offset: 0x00000000 Length: 0x00000277 -} -.mresource public FSharpOptimizationData.ListExpressionSteppingTest6 -{ - // Offset: 0x00000280 Length: 0x000000BC -} -.module ListExpressionSteppingTest6.dll -// MVID: {4D94A6C5-7F30-F33D-A745-0383C5A6944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x00290000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed ListExpressionSteppingTest6 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public ListExpressionSteppingTest6 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar sealed nested assembly beforefieldinit specialname f7@6 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public int32 x - .field public int32 x0 - .field public class [mscorlib]System.Collections.Generic.IEnumerator`1 'enum' - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public class [mscorlib]System.Collections.Generic.IEnumerator`1 enum0 - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(int32 x, - int32 x0, - class [mscorlib]System.Collections.Generic.IEnumerator`1 'enum', - class [mscorlib]System.Collections.Generic.IEnumerator`1 enum0, - int32 pc, - int32 current) cil managed - { - // Code size 52 (0x34) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x0 - IL_000e: ldarg.0 - IL_000f: ldarg.3 - IL_0010: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::'enum' - IL_0015: ldarg.0 - IL_0016: ldarg.s enum0 - IL_0018: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::enum0 - IL_001d: ldarg.0 - IL_001e: ldarg.s pc - IL_0020: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0025: ldarg.0 - IL_0026: ldarg.s current - IL_0028: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::current - IL_002d: ldarg.0 - IL_002e: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() - IL_0033: ret - } // end of method f7@6::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed - { - // Code size 351 (0x15f) - .maxstack 6 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_0023, - IL_0025, - IL_0027, - IL_0029, - IL_002b) - IL_0021: br.s IL_0048 - - IL_0023: br.s IL_002d - - IL_0025: br.s IL_0033 - - IL_0027: br.s IL_0036 - - IL_0029: br.s IL_003c - - IL_002b: br.s IL_0042 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_002d: nop - IL_002e: br IL_00b2 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0033: nop - IL_0034: br.s IL_00a8 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0036: nop - IL_0037: br IL_0135 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_003c: nop - IL_003d: br IL_012b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0042: nop - IL_0043: br IL_0156 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0048: nop - .line 6,8 : 11,21 - IL_0049: ldarg.0 - IL_004a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6::get_es() - IL_004f: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 - IL_0054: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1 class [mscorlib]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_0059: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::'enum' - IL_005e: ldarg.0 - IL_005f: ldc.i4.1 - IL_0060: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - .line 6,8 : 11,21 - IL_0065: ldarg.0 - IL_0066: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::'enum' - IL_006b: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() - IL_0070: brfalse.s IL_00b2 - - IL_0072: ldarg.0 - IL_0073: ldarg.0 - IL_0074: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::'enum' - IL_0079: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() - IL_007e: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x - .line 7,7 : 14,29 - IL_0083: ldstr "hello" - IL_0088: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_008d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0092: pop - IL_0093: ldarg.0 - IL_0094: ldc.i4.2 - IL_0095: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - .line 8,8 : 14,21 - IL_009a: ldarg.0 - IL_009b: ldarg.0 - IL_009c: ldfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x - IL_00a1: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::current - IL_00a6: ldc.i4.1 - IL_00a7: ret - - .line 6,8 : 11,21 - IL_00a8: ldarg.0 - IL_00a9: ldc.i4.0 - IL_00aa: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x - .line 100001,100001 : 0,0 - IL_00af: nop - IL_00b0: br.s IL_0065 - - IL_00b2: ldarg.0 - IL_00b3: ldc.i4.5 - IL_00b4: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - .line 6,8 : 11,21 - IL_00b9: ldarg.0 - IL_00ba: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::'enum' - IL_00bf: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) - IL_00c4: nop - IL_00c5: ldarg.0 - IL_00c6: ldnull - IL_00c7: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::'enum' - .line 9,11 : 11,21 - IL_00cc: ldarg.0 - IL_00cd: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6::get_es() - IL_00d2: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 - IL_00d7: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1 class [mscorlib]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_00dc: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::enum0 - IL_00e1: ldarg.0 - IL_00e2: ldc.i4.3 - IL_00e3: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - .line 9,11 : 11,21 - IL_00e8: ldarg.0 - IL_00e9: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::enum0 - IL_00ee: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() - IL_00f3: brfalse.s IL_0135 - - IL_00f5: ldarg.0 - IL_00f6: ldarg.0 - IL_00f7: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::enum0 - IL_00fc: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0101: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x0 - .line 10,10 : 14,31 - IL_0106: ldstr "goodbye" - IL_010b: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0110: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0115: pop - IL_0116: ldarg.0 - IL_0117: ldc.i4.4 - IL_0118: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - .line 11,11 : 14,21 - IL_011d: ldarg.0 - IL_011e: ldarg.0 - IL_011f: ldfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x0 - IL_0124: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::current - IL_0129: ldc.i4.1 - IL_012a: ret - - .line 9,11 : 11,21 - IL_012b: ldarg.0 - IL_012c: ldc.i4.0 - IL_012d: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::x0 - .line 100001,100001 : 0,0 - IL_0132: nop - IL_0133: br.s IL_00e8 - - IL_0135: ldarg.0 - IL_0136: ldc.i4.5 - IL_0137: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - .line 9,11 : 11,21 - IL_013c: ldarg.0 - IL_013d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::enum0 - IL_0142: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) - IL_0147: nop - IL_0148: ldarg.0 - IL_0149: ldnull - IL_014a: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::enum0 - IL_014f: ldarg.0 - IL_0150: ldc.i4.5 - IL_0151: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0156: ldarg.0 - IL_0157: ldc.i4.0 - IL_0158: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::current - IL_015d: ldc.i4.0 - IL_015e: ret - } // end of method f7@6::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 191 (0xbf) - .maxstack 6 - .locals init ([0] class [mscorlib]System.Exception V_0, - [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, - [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 - IL_0000: ldnull - IL_0001: stloc.0 - IL_0002: ldarg.0 - IL_0003: ldfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0008: ldc.i4.5 - IL_0009: sub - IL_000a: switch ( - IL_0015) - IL_0013: br.s IL_001b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0015: nop - IL_0016: br IL_00b2 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001b: nop - .try - { - IL_001c: ldarg.0 - IL_001d: ldfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0022: switch ( - IL_0041, - IL_0043, - IL_0045, - IL_0047, - IL_0049, - IL_004b) - IL_003f: br.s IL_005f - - IL_0041: br.s IL_004d - - IL_0043: br.s IL_0050 - - IL_0045: br.s IL_0053 - - IL_0047: br.s IL_0056 - - IL_0049: br.s IL_0059 - - IL_004b: br.s IL_005c - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_004d: nop - IL_004e: br.s IL_008c - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0050: nop - IL_0051: br.s IL_0078 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0053: nop - IL_0054: br.s IL_0077 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0056: nop - IL_0057: br.s IL_0061 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0059: nop - IL_005a: br.s IL_0060 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_005c: nop - IL_005d: br.s IL_008c - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_005f: nop - .line 100001,100001 : 0,0 - IL_0060: nop - IL_0061: ldarg.0 - IL_0062: ldc.i4.5 - IL_0063: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0068: ldarg.0 - IL_0069: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::enum0 - IL_006e: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) - IL_0073: nop - .line 100001,100001 : 0,0 - IL_0074: nop - IL_0075: br.s IL_008c - - .line 100001,100001 : 0,0 - IL_0077: nop - IL_0078: ldarg.0 - IL_0079: ldc.i4.5 - IL_007a: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_007f: ldarg.0 - IL_0080: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::'enum' - IL_0085: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) - IL_008a: nop - .line 100001,100001 : 0,0 - IL_008b: nop - IL_008c: ldarg.0 - IL_008d: ldc.i4.5 - IL_008e: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0093: ldarg.0 - IL_0094: ldc.i4.0 - IL_0095: stfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::current - IL_009a: ldnull - IL_009b: stloc.1 - IL_009c: leave.s IL_00aa - - } // end .try - catch [mscorlib]System.Object - { - IL_009e: castclass [mscorlib]System.Exception - IL_00a3: stloc.2 - .line 6,8 : 11,21 - IL_00a4: ldloc.2 - IL_00a5: stloc.0 - IL_00a6: ldnull - IL_00a7: stloc.1 - IL_00a8: leave.s IL_00aa - - .line 100001,100001 : 0,0 - } // end handler - IL_00aa: ldloc.1 - IL_00ab: pop - .line 100001,100001 : 0,0 - IL_00ac: nop - IL_00ad: br IL_0002 - - IL_00b2: ldloc.0 - IL_00b3: ldnull - IL_00b4: cgt.un - IL_00b6: brfalse.s IL_00ba - - IL_00b8: br.s IL_00bc - - IL_00ba: br.s IL_00be - - .line 100001,100001 : 0,0 - IL_00bc: ldloc.0 - IL_00bd: throw - - .line 100001,100001 : 0,0 - IL_00be: ret - } // end of method f7@6::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 79 (0x4f) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::pc - IL_0007: switch ( - IL_0026, - IL_0028, - IL_002a, - IL_002c, - IL_002e, - IL_0030) - IL_0024: br.s IL_0044 - - IL_0026: br.s IL_0032 - - IL_0028: br.s IL_0035 - - IL_002a: br.s IL_0038 - - IL_002c: br.s IL_003b - - IL_002e: br.s IL_003e - - IL_0030: br.s IL_0041 - - IL_0032: nop - IL_0033: br.s IL_004d - - IL_0035: nop - IL_0036: br.s IL_004b - - IL_0038: nop - IL_0039: br.s IL_0049 - - IL_003b: nop - IL_003c: br.s IL_0047 - - IL_003e: nop - IL_003f: br.s IL_0045 - - IL_0041: nop - IL_0042: br.s IL_004d - - IL_0044: nop - IL_0045: ldc.i4.1 - IL_0046: ret - - IL_0047: ldc.i4.1 - IL_0048: ret - - IL_0049: ldc.i4.1 - IL_004a: ret - - IL_004b: ldc.i4.1 - IL_004c: ret - - IL_004d: ldc.i4.0 - IL_004e: ret - } // end of method f7@6::get_CheckClose - - .method public strict virtual instance int32 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::current - IL_0007: ret - } // end of method f7@6::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 10 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: ldnull - IL_0004: ldnull - IL_0005: ldc.i4.0 - IL_0006: ldc.i4.0 - IL_0007: newobj instance void ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::.ctor(int32, - int32, - class [mscorlib]System.Collections.Generic.IEnumerator`1, - class [mscorlib]System.Collections.Generic.IEnumerator`1, - int32, - int32) - IL_000c: ret - } // end of method f7@6::GetFreshEnumerator - - } // end of class f7@6 - - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_es() cil managed - { - // Code size 6 (0x6) - .maxstack 4 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$ListExpressionSteppingTest6::es@4 - IL_0005: ret - } // end of method ListExpressionSteppingTest6::get_es - - .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - f7() cil managed - { - // Code size 20 (0x14) - .maxstack 8 - .line 6,11 : 9,23 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: ldnull - IL_0004: ldnull - IL_0005: ldc.i4.0 - IL_0006: ldc.i4.0 - IL_0007: newobj instance void ListExpressionSteppingTest6/ListExpressionSteppingTest6/f7@6::.ctor(int32, - int32, - class [mscorlib]System.Collections.Generic.IEnumerator`1, - class [mscorlib]System.Collections.Generic.IEnumerator`1, - int32, - int32) - IL_000c: tail. - IL_000e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0013: ret - } // end of method ListExpressionSteppingTest6::f7 - - .property class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - es() - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) - .get class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6::get_es() - } // end of property ListExpressionSteppingTest6::es - } // end of class ListExpressionSteppingTest6 - -} // end of class ListExpressionSteppingTest6 - -.class private abstract auto ansi sealed ''.$ListExpressionSteppingTest6 - extends [mscorlib]System.Object -{ - .field static assembly initonly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 es@4 - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 38 (0x26) - .maxstack 6 - .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 es) - .line 4,4 : 5,21 - IL_0000: nop - IL_0001: ldc.i4.1 - IL_0002: ldc.i4.2 - IL_0003: ldc.i4.3 - IL_0004: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() - IL_0009: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, - class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_000e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, - class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0013: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, - class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0018: dup - IL_0019: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$ListExpressionSteppingTest6::es@4 - IL_001e: stloc.0 - .line 13,13 : 13,17 - IL_001f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest6/ListExpressionSteppingTest6::f7() - IL_0024: pop - IL_0025: ret - } // end of method $ListExpressionSteppingTest6::.cctor - -} // end of class ''.$ListExpressionSteppingTest6 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/keep.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/keep.lst new file mode 100644 index 00000000000..f59ec20aabf --- /dev/null +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/keep.lst @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/CustomAttributeGenericParameter01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/CustomAttributeGenericParameter01.il.bsl deleted file mode 100644 index 7a54e991e15..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/CustomAttributeGenericParameter01.il.bsl +++ /dev/null @@ -1,94 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v4.0.30319 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 4:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:0:0:0 -} -.assembly CustomAttributeGenericParameter01 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.CustomAttributeGenericParameter01 -{ - // Offset: 0x00000000 Length: 0x000002D6 -} -.mresource public FSharpOptimizationData.CustomAttributeGenericParameter01 -{ - // Offset: 0x000002E0 Length: 0x0000007A -} -.module CustomAttributeGenericParameter01.exe -// MVID: {4BEB2894-F08A-F524-A745-03839428EB4B} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x001E0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed M - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .method public static !!T f(!!T x) cil managed - { - .param type T - .custom instance void [mscorlib]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) - // Code size 3 (0x3) - .maxstack 3 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 4,4 : 48,49 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ret - } // end of method M::f - -} // end of class M - -.class private abstract auto ansi sealed ''.$M - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static void main@() cil managed - { - .entrypoint - // Code size 9 (0x9) - .maxstack 3 - .line 6,6 : 1,7 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0007: pop - IL_0008: ret - } // end of method $M::main@ - -} // end of class ''.$M - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Mutation/Mutation01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Mutation/Mutation01.il.bsl deleted file mode 100644 index d8087d3c01e..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Mutation/Mutation01.il.bsl +++ /dev/null @@ -1,325 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v4.0.30319 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 4:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:0:0:0 -} -.assembly Mutation01 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.Mutation01 -{ - // Offset: 0x00000000 Length: 0x00000719 -} -.mresource public FSharpOptimizationData.Mutation01 -{ - // Offset: 0x00000720 Length: 0x00000220 -} -.module Mutation01.exe -// MVID: {4BEB289C-8C6A-2EAE-A745-03839C28EB4B} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x00480000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed Mutation01 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class sequential ansi serializable sealed nested public Test - extends [mscorlib]System.ValueType - implements class [mscorlib]System.IEquatable`1, - [mscorlib]System.Collections.IStructuralEquatable, - class [mscorlib]System.IComparable`1, - [mscorlib]System.IComparable, - [mscorlib]System.Collections.IStructuralComparable - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .field public int32 v - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Mutation01/Test obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 39 (0x27) - .maxstack 4 - .locals init ([0] valuetype Mutation01/Test& V_0, - [1] class [mscorlib]System.Collections.IComparer V_1, - [2] int32 V_2, - [3] int32 V_3) - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16,16 : 6,10 - IL_0000: nop - IL_0001: ldarga.s obj - IL_0003: stloc.0 - IL_0004: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0009: stloc.1 - IL_000a: ldarg.0 - IL_000b: ldfld int32 Mutation01/Test::v - IL_0010: stloc.2 - IL_0011: ldloc.0 - IL_0012: ldfld int32 Mutation01/Test::v - IL_0017: stloc.3 - IL_0018: ldloc.2 - IL_0019: ldloc.3 - IL_001a: bge.s IL_001e - - IL_001c: br.s IL_0020 - - IL_001e: br.s IL_0022 - - .line 100001,100001 : 0,0 - IL_0020: ldc.i4.m1 - IL_0021: ret - - .line 100001,100001 : 0,0 - IL_0022: ldloc.2 - IL_0023: ldloc.3 - IL_0024: cgt - IL_0026: ret - } // end of method Test::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 4 - .line 16,16 : 6,10 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: unbox.any Mutation01/Test - IL_0008: call instance int32 Mutation01/Test::CompareTo(valuetype Mutation01/Test) - IL_000d: ret - } // end of method Test::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [mscorlib]System.Collections.IComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 45 (0x2d) - .maxstack 4 - .locals init ([0] valuetype Mutation01/Test V_0, - [1] valuetype Mutation01/Test& V_1, - [2] class [mscorlib]System.Collections.IComparer V_2, - [3] int32 V_3, - [4] int32 V_4) - .line 16,16 : 6,10 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: unbox.any Mutation01/Test - IL_0007: stloc.0 - IL_0008: ldloca.s V_0 - IL_000a: stloc.1 - IL_000b: ldarg.2 - IL_000c: stloc.2 - IL_000d: ldarg.0 - IL_000e: ldfld int32 Mutation01/Test::v - IL_0013: stloc.3 - IL_0014: ldloc.1 - IL_0015: ldfld int32 Mutation01/Test::v - IL_001a: stloc.s V_4 - IL_001c: ldloc.3 - IL_001d: ldloc.s V_4 - IL_001f: bge.s IL_0023 - - IL_0021: br.s IL_0025 - - IL_0023: br.s IL_0027 - - .line 100001,100001 : 0,0 - IL_0025: ldc.i4.m1 - IL_0026: ret - - .line 100001,100001 : 0,0 - IL_0027: ldloc.3 - IL_0028: ldloc.s V_4 - IL_002a: cgt - IL_002c: ret - } // end of method Test::CompareTo - - .method public hidebysig virtual final - instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 28 (0x1c) - .maxstack 7 - .locals init ([0] int32 V_0, - [1] class [mscorlib]System.Collections.IEqualityComparer V_1) - .line 16,16 : 6,10 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: stloc.0 - IL_0003: ldc.i4 0x9e3779b9 - IL_0008: ldarg.1 - IL_0009: stloc.1 - IL_000a: ldarg.0 - IL_000b: ldfld int32 Mutation01/Test::v - IL_0010: ldloc.0 - IL_0011: ldc.i4.6 - IL_0012: shl - IL_0013: ldloc.0 - IL_0014: ldc.i4.2 - IL_0015: shr - IL_0016: add - IL_0017: add - IL_0018: add - IL_0019: stloc.0 - IL_001a: ldloc.0 - IL_001b: ret - } // end of method Test::GetHashCode - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 4 - .line 16,16 : 6,10 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: call instance int32 Mutation01/Test::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method Test::GetHashCode - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 40 (0x28) - .maxstack 4 - .locals init (valuetype Mutation01/Test V_0, - valuetype Mutation01/Test& V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0007: brtrue.s IL_000b - - IL_0009: br.s IL_0026 - - IL_000b: ldarg.1 - IL_000c: unbox.any Mutation01/Test - IL_0011: stloc.0 - IL_0012: ldloca.s V_0 - IL_0014: stloc.1 - IL_0015: ldarg.2 - IL_0016: stloc.2 - IL_0017: ldarg.0 - IL_0018: ldfld int32 Mutation01/Test::v - IL_001d: ldloc.1 - IL_001e: ldfld int32 Mutation01/Test::v - IL_0023: ceq - IL_0025: ret - - IL_0026: ldc.i4.0 - IL_0027: ret - } // end of method Test::Equals - - .method public instance void setV(!!a v) cil managed - { - // Code size 9 (0x9) - .maxstack 4 - .line 18,18 : 33,41 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.0 - IL_0003: stfld int32 Mutation01/Test::v - IL_0008: ret - } // end of method Test::setV - - .method public hidebysig virtual final - instance bool Equals(valuetype Mutation01/Test obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 19 (0x13) - .maxstack 4 - .locals init ([0] valuetype Mutation01/Test& V_0) - .line 16,16 : 6,10 - IL_0000: nop - IL_0001: ldarga.s obj - IL_0003: stloc.0 - IL_0004: ldarg.0 - IL_0005: ldfld int32 Mutation01/Test::v - IL_000a: ldloc.0 - IL_000b: ldfld int32 Mutation01/Test::v - IL_0010: ceq - IL_0012: ret - } // end of method Test::Equals - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 28 (0x1c) - .maxstack 4 - .locals init (valuetype Mutation01/Test V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0007: brtrue.s IL_000b - - IL_0009: br.s IL_001a - - IL_000b: ldarg.1 - IL_000c: unbox.any Mutation01/Test - IL_0011: stloc.0 - IL_0012: ldarg.0 - IL_0013: ldloc.0 - IL_0014: call instance bool Mutation01/Test::Equals(valuetype Mutation01/Test) - IL_0019: ret - - IL_001a: ldc.i4.0 - IL_001b: ret - } // end of method Test::Equals - - } // end of class Test - -} // end of class Mutation01 - -.class private abstract auto ansi sealed ''.$Mutation01 - extends [mscorlib]System.Object -{ - .method public static void main@() cil managed - { - .entrypoint - // Code size 2 (0x2) - .maxstack 2 - IL_0000: nop - IL_0001: ret - } // end of method $Mutation01::main@ - -} // end of class ''.$Mutation01 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.netfx4.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.netfx4.bsl index a38bcd2b311..97e240269b4 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.netfx4.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.netfx4.bsl @@ -38,20 +38,20 @@ } .mresource public FSharpSignatureData.Linq101Aggregates01 { - // Offset: 0x00000000 Length: 0x0000060A + // Offset: 0x00000000 Length: 0x0000060C } .mresource public FSharpOptimizationData.Linq101Aggregates01 { // Offset: 0x00000610 Length: 0x00000211 } .module Linq101Aggregates01.exe -// MVID: {56D01D45-D281-4783-A745-0383451DD056} +// MVID: {58067926-D281-4783-A745-038326790658} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00E60000 +// Image base: 0x00AC0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -116,7 +116,7 @@ // Code size 196 (0xc4) .maxstack 6 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'c:\\KevinRansom\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\QueryExpressionStepping\\Linq101Aggregates01.fs' + .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\QueryExpressionStepping\\Linq101Aggregates01.fs' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/uniqueFactors@12::pc IL_0006: ldc.i4.1 @@ -133,25 +133,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 12,12 : 9,33 + .line 12,12 : 9,33 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_factorsOf300() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -160,7 +160,7 @@ IL_0043: ldarg.0 IL_0044: ldc.i4.1 IL_0045: stfld int32 Linq101Aggregates01/uniqueFactors@12::pc - .line 12,12 : 9,33 + .line 12,12 : 9,33 '' IL_004a: ldarg.0 IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/uniqueFactors@12::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -171,7 +171,7 @@ IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/uniqueFactors@12::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0063: stfld int32 Linq101Aggregates01/uniqueFactors@12::_arg1 - .line 12,12 : 9,33 + .line 12,12 : 9,33 '' IL_0068: ldarg.0 IL_0069: ldarg.0 IL_006a: ldfld int32 Linq101Aggregates01/uniqueFactors@12::_arg1 @@ -179,7 +179,7 @@ IL_0074: ldarg.0 IL_0075: ldc.i4.2 IL_0076: stfld int32 Linq101Aggregates01/uniqueFactors@12::pc - .line 13,13 : 9,17 + .line 13,13 : 9,17 '' IL_007b: ldarg.0 IL_007c: ldarg.0 IL_007d: ldfld int32 Linq101Aggregates01/uniqueFactors@12::n @@ -190,18 +190,18 @@ IL_0089: ldarg.0 IL_008a: ldc.i4.0 IL_008b: stfld int32 Linq101Aggregates01/uniqueFactors@12::n - .line 12,12 : 9,33 + .line 12,12 : 9,33 '' IL_0090: ldarg.0 IL_0091: ldc.i4.0 IL_0092: stfld int32 Linq101Aggregates01/uniqueFactors@12::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 IL_009c: stfld int32 Linq101Aggregates01/uniqueFactors@12::pc - .line 12,12 : 9,33 + .line 12,12 : 9,33 '' IL_00a1: ldarg.0 IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/uniqueFactors@12::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -227,7 +227,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -238,13 +238,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -265,30 +265,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -297,7 +297,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/uniqueFactors@12::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -314,18 +314,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 12,12 : 9,33 + .line 12,12 : 9,33 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -338,11 +338,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method uniqueFactors@12::Close @@ -483,7 +483,7 @@ { // Code size 196 (0xc4) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/numSum@21::pc IL_0006: ldc.i4.1 @@ -500,25 +500,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 21,21 : 9,28 + .line 21,21 : 9,28 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_numbers() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -527,7 +527,7 @@ IL_0043: ldarg.0 IL_0044: ldc.i4.1 IL_0045: stfld int32 Linq101Aggregates01/numSum@21::pc - .line 21,21 : 9,28 + .line 21,21 : 9,28 '' IL_004a: ldarg.0 IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/numSum@21::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -538,7 +538,7 @@ IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/numSum@21::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0063: stfld int32 Linq101Aggregates01/numSum@21::_arg1 - .line 21,21 : 9,28 + .line 21,21 : 9,28 '' IL_0068: ldarg.0 IL_0069: ldarg.0 IL_006a: ldfld int32 Linq101Aggregates01/numSum@21::_arg1 @@ -546,7 +546,7 @@ IL_0074: ldarg.0 IL_0075: ldc.i4.2 IL_0076: stfld int32 Linq101Aggregates01/numSum@21::pc - .line 22,22 : 9,16 + .line 22,22 : 9,16 '' IL_007b: ldarg.0 IL_007c: ldarg.0 IL_007d: ldfld int32 Linq101Aggregates01/numSum@21::n @@ -557,18 +557,18 @@ IL_0089: ldarg.0 IL_008a: ldc.i4.0 IL_008b: stfld int32 Linq101Aggregates01/numSum@21::n - .line 21,21 : 9,28 + .line 21,21 : 9,28 '' IL_0090: ldarg.0 IL_0091: ldc.i4.0 IL_0092: stfld int32 Linq101Aggregates01/numSum@21::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 IL_009c: stfld int32 Linq101Aggregates01/numSum@21::pc - .line 21,21 : 9,28 + .line 21,21 : 9,28 '' IL_00a1: ldarg.0 IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/numSum@21::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -594,7 +594,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -605,13 +605,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -632,30 +632,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -664,7 +664,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/numSum@21::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -681,18 +681,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 21,21 : 9,28 + .line 21,21 : 9,28 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -705,11 +705,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method numSum@21::Close @@ -801,6 +801,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -813,7 +815,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 22,22 : 15,16 + .line 22,22 : 15,16 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -876,7 +878,7 @@ { // Code size 196 (0xc4) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/totalChars@30::pc IL_0006: ldc.i4.1 @@ -893,25 +895,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 30,30 : 9,26 + .line 30,30 : 9,26 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_words() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -920,7 +922,7 @@ IL_0043: ldarg.0 IL_0044: ldc.i4.1 IL_0045: stfld int32 Linq101Aggregates01/totalChars@30::pc - .line 30,30 : 9,26 + .line 30,30 : 9,26 '' IL_004a: ldarg.0 IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/totalChars@30::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -931,7 +933,7 @@ IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/totalChars@30::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0063: stfld string Linq101Aggregates01/totalChars@30::_arg1 - .line 30,30 : 9,26 + .line 30,30 : 9,26 '' IL_0068: ldarg.0 IL_0069: ldarg.0 IL_006a: ldfld string Linq101Aggregates01/totalChars@30::_arg1 @@ -939,7 +941,7 @@ IL_0074: ldarg.0 IL_0075: ldc.i4.2 IL_0076: stfld int32 Linq101Aggregates01/totalChars@30::pc - .line 31,31 : 9,25 + .line 31,31 : 9,25 '' IL_007b: ldarg.0 IL_007c: ldarg.0 IL_007d: ldfld string Linq101Aggregates01/totalChars@30::w @@ -950,18 +952,18 @@ IL_0089: ldarg.0 IL_008a: ldnull IL_008b: stfld string Linq101Aggregates01/totalChars@30::w - .line 30,30 : 9,26 + .line 30,30 : 9,26 '' IL_0090: ldarg.0 IL_0091: ldnull IL_0092: stfld string Linq101Aggregates01/totalChars@30::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 IL_009c: stfld int32 Linq101Aggregates01/totalChars@30::pc - .line 30,30 : 9,26 + .line 30,30 : 9,26 '' IL_00a1: ldarg.0 IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/totalChars@30::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -987,7 +989,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -998,13 +1000,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -1025,30 +1027,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -1057,7 +1059,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/totalChars@30::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -1074,18 +1076,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 30,30 : 9,26 + .line 30,30 : 9,26 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -1098,11 +1100,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method totalChars@30::Close @@ -1194,6 +1196,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1206,7 +1210,7 @@ { // Code size 8 (0x8) .maxstack 8 - .line 31,31 : 16,24 + .line 31,31 : 16,24 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: callvirt instance int32 [mscorlib]System.String::get_Length() @@ -1222,6 +1226,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -1238,11 +1244,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] class [Utils]Utils/Product p) - .line 39,39 : 9,29 + .line 39,39 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 40,40 : 9,32 + .line 40,40 : 9,32 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/categories@39::builder@ IL_0009: ldloc.0 @@ -1259,6 +1265,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1271,7 +1279,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 40,40 : 20,21 + .line 40,40 : 20,21 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -1285,6 +1293,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1297,7 +1307,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 40,40 : 22,32 + .line 40,40 : 22,32 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -1367,7 +1377,7 @@ { // Code size 200 (0xc8) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/sum@42::pc IL_0006: ldc.i4.1 @@ -1384,25 +1394,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 42,42 : 13,26 + .line 42,42 : 13,26 '' IL_0031: ldarg.0 IL_0032: ldarg.0 IL_0033: ldfld class [System.Core]System.Linq.IGrouping`2 Linq101Aggregates01/sum@42::g @@ -1412,7 +1422,7 @@ IL_0047: ldarg.0 IL_0048: ldc.i4.1 IL_0049: stfld int32 Linq101Aggregates01/sum@42::pc - .line 42,42 : 13,26 + .line 42,42 : 13,26 '' IL_004e: ldarg.0 IL_004f: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/sum@42::'enum' IL_0054: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -1423,7 +1433,7 @@ IL_005d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/sum@42::'enum' IL_0062: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0067: stfld class [Utils]Utils/Product Linq101Aggregates01/sum@42::_arg3 - .line 42,42 : 13,26 + .line 42,42 : 13,26 '' IL_006c: ldarg.0 IL_006d: ldarg.0 IL_006e: ldfld class [Utils]Utils/Product Linq101Aggregates01/sum@42::_arg3 @@ -1431,7 +1441,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Aggregates01/sum@42::pc - .line 43,43 : 13,33 + .line 43,43 : 13,33 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Aggregates01/sum@42::x @@ -1442,18 +1452,18 @@ IL_008d: ldarg.0 IL_008e: ldnull IL_008f: stfld class [Utils]Utils/Product Linq101Aggregates01/sum@42::x - .line 42,42 : 13,26 + .line 42,42 : 13,26 '' IL_0094: ldarg.0 IL_0095: ldnull IL_0096: stfld class [Utils]Utils/Product Linq101Aggregates01/sum@42::_arg3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_004e IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Aggregates01/sum@42::pc - .line 42,42 : 13,26 + .line 42,42 : 13,26 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/sum@42::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -1479,7 +1489,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -1490,13 +1500,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -1517,30 +1527,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -1549,7 +1559,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/sum@42::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -1566,18 +1576,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 42,42 : 13,26 + .line 42,42 : 13,26 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -1590,11 +1600,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method sum@42::Close @@ -1689,6 +1699,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1701,7 +1713,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 43,43 : 19,33 + .line 43,43 : 19,33 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -1718,6 +1730,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -1745,7 +1759,7 @@ [9] int32 V_9, [10] int32 V_10, [11] class [mscorlib]System.IDisposable V_11) - .line 40,40 : 38,39 + .line 40,40 : 38,39 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 @@ -1790,7 +1804,7 @@ IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() IL_0055: brfalse.s IL_006d - .line 43,43 : 13,33 + .line 43,43 : 13,33 '' IL_0057: ldloc.s V_10 IL_0059: ldloc.s V_6 IL_005b: ldloc.s V_8 @@ -1798,7 +1812,7 @@ IL_0062: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) IL_0067: add.ovf IL_0068: stloc.s V_10 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_006a: nop IL_006b: br.s IL_004e @@ -1819,21 +1833,21 @@ IL_0082: br.s IL_008e - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0084: ldloc.s V_11 IL_0086: callvirt instance void [mscorlib]System.IDisposable::Dispose() IL_008b: ldnull IL_008c: pop IL_008d: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_008e: ldnull IL_008f: pop IL_0090: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0091: ldloc.s V_9 IL_0093: stloc.1 - .line 45,45 : 9,28 + .line 45,45 : 9,28 '' IL_0094: ldarg.0 IL_0095: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/'categories@40-3'::builder@ IL_009a: ldloc.0 @@ -1853,6 +1867,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1867,7 +1883,7 @@ .maxstack 6 .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] int32 sum) - .line 45,45 : 17,27 + .line 45,45 : 17,27 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2,int32>::get_Item1() IL_0006: stloc.0 @@ -1940,7 +1956,7 @@ { // Code size 196 (0xc4) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/minNum@49::pc IL_0006: ldc.i4.1 @@ -1957,25 +1973,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 49,49 : 22,41 + .line 49,49 : 22,41 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_numbers() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -1984,7 +2000,7 @@ IL_0043: ldarg.0 IL_0044: ldc.i4.1 IL_0045: stfld int32 Linq101Aggregates01/minNum@49::pc - .line 49,49 : 22,41 + .line 49,49 : 22,41 '' IL_004a: ldarg.0 IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/minNum@49::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -1995,7 +2011,7 @@ IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/minNum@49::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0063: stfld int32 Linq101Aggregates01/minNum@49::_arg1 - .line 49,49 : 22,41 + .line 49,49 : 22,41 '' IL_0068: ldarg.0 IL_0069: ldarg.0 IL_006a: ldfld int32 Linq101Aggregates01/minNum@49::_arg1 @@ -2003,7 +2019,7 @@ IL_0074: ldarg.0 IL_0075: ldc.i4.2 IL_0076: stfld int32 Linq101Aggregates01/minNum@49::pc - .line 49,49 : 42,49 + .line 49,49 : 42,49 '' IL_007b: ldarg.0 IL_007c: ldarg.0 IL_007d: ldfld int32 Linq101Aggregates01/minNum@49::n @@ -2014,18 +2030,18 @@ IL_0089: ldarg.0 IL_008a: ldc.i4.0 IL_008b: stfld int32 Linq101Aggregates01/minNum@49::n - .line 49,49 : 22,41 + .line 49,49 : 22,41 '' IL_0090: ldarg.0 IL_0091: ldc.i4.0 IL_0092: stfld int32 Linq101Aggregates01/minNum@49::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 IL_009c: stfld int32 Linq101Aggregates01/minNum@49::pc - .line 49,49 : 22,41 + .line 49,49 : 22,41 '' IL_00a1: ldarg.0 IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/minNum@49::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -2051,7 +2067,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -2062,13 +2078,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -2089,30 +2105,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -2121,7 +2137,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/minNum@49::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -2138,18 +2154,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 49,49 : 22,41 + .line 49,49 : 22,41 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -2162,11 +2178,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method minNum@49::Close @@ -2258,6 +2274,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2270,7 +2288,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 49,49 : 48,49 + .line 49,49 : 48,49 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -2333,7 +2351,7 @@ { // Code size 196 (0xc4) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/shortestWord@52::pc IL_0006: ldc.i4.1 @@ -2350,25 +2368,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 52,52 : 28,45 + .line 52,52 : 28,45 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_words() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -2377,7 +2395,7 @@ IL_0043: ldarg.0 IL_0044: ldc.i4.1 IL_0045: stfld int32 Linq101Aggregates01/shortestWord@52::pc - .line 52,52 : 28,45 + .line 52,52 : 28,45 '' IL_004a: ldarg.0 IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/shortestWord@52::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -2388,7 +2406,7 @@ IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/shortestWord@52::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0063: stfld string Linq101Aggregates01/shortestWord@52::_arg1 - .line 52,52 : 28,45 + .line 52,52 : 28,45 '' IL_0068: ldarg.0 IL_0069: ldarg.0 IL_006a: ldfld string Linq101Aggregates01/shortestWord@52::_arg1 @@ -2396,7 +2414,7 @@ IL_0074: ldarg.0 IL_0075: ldc.i4.2 IL_0076: stfld int32 Linq101Aggregates01/shortestWord@52::pc - .line 52,52 : 46,60 + .line 52,52 : 46,60 '' IL_007b: ldarg.0 IL_007c: ldarg.0 IL_007d: ldfld string Linq101Aggregates01/shortestWord@52::w @@ -2407,18 +2425,18 @@ IL_0089: ldarg.0 IL_008a: ldnull IL_008b: stfld string Linq101Aggregates01/shortestWord@52::w - .line 52,52 : 28,45 + .line 52,52 : 28,45 '' IL_0090: ldarg.0 IL_0091: ldnull IL_0092: stfld string Linq101Aggregates01/shortestWord@52::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 IL_009c: stfld int32 Linq101Aggregates01/shortestWord@52::pc - .line 52,52 : 28,45 + .line 52,52 : 28,45 '' IL_00a1: ldarg.0 IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/shortestWord@52::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -2444,7 +2462,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -2455,13 +2473,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -2482,30 +2500,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -2514,7 +2532,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/shortestWord@52::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -2531,18 +2549,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 52,52 : 28,45 + .line 52,52 : 28,45 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -2555,11 +2573,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method shortestWord@52::Close @@ -2651,6 +2669,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2663,7 +2683,7 @@ { // Code size 8 (0x8) .maxstack 8 - .line 52,52 : 52,60 + .line 52,52 : 52,60 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: callvirt instance int32 [mscorlib]System.String::get_Length() @@ -2679,6 +2699,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -2695,11 +2717,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] class [Utils]Utils/Product p) - .line 57,57 : 9,29 + .line 57,57 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 58,58 : 9,32 + .line 58,58 : 9,32 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/categories2@57::builder@ IL_0009: ldloc.0 @@ -2716,6 +2738,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2728,7 +2752,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 58,58 : 20,21 + .line 58,58 : 20,21 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -2742,6 +2766,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2754,7 +2780,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 58,58 : 22,32 + .line 58,58 : 22,32 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -2824,7 +2850,7 @@ { // Code size 200 (0xc8) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/min@59::pc IL_0006: ldc.i4.1 @@ -2841,25 +2867,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 59,59 : 27,40 + .line 59,59 : 27,40 '' IL_0031: ldarg.0 IL_0032: ldarg.0 IL_0033: ldfld class [System.Core]System.Linq.IGrouping`2 Linq101Aggregates01/min@59::g @@ -2869,7 +2895,7 @@ IL_0047: ldarg.0 IL_0048: ldc.i4.1 IL_0049: stfld int32 Linq101Aggregates01/min@59::pc - .line 59,59 : 27,40 + .line 59,59 : 27,40 '' IL_004e: ldarg.0 IL_004f: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/min@59::'enum' IL_0054: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -2880,7 +2906,7 @@ IL_005d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/min@59::'enum' IL_0062: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0067: stfld class [Utils]Utils/Product Linq101Aggregates01/min@59::_arg3 - .line 59,59 : 27,40 + .line 59,59 : 27,40 '' IL_006c: ldarg.0 IL_006d: ldarg.0 IL_006e: ldfld class [Utils]Utils/Product Linq101Aggregates01/min@59::_arg3 @@ -2888,7 +2914,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Aggregates01/min@59::pc - .line 59,59 : 41,58 + .line 59,59 : 41,58 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Aggregates01/min@59::x @@ -2899,18 +2925,18 @@ IL_008d: ldarg.0 IL_008e: ldnull IL_008f: stfld class [Utils]Utils/Product Linq101Aggregates01/min@59::x - .line 59,59 : 27,40 + .line 59,59 : 27,40 '' IL_0094: ldarg.0 IL_0095: ldnull IL_0096: stfld class [Utils]Utils/Product Linq101Aggregates01/min@59::_arg3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_004e IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Aggregates01/min@59::pc - .line 59,59 : 27,40 + .line 59,59 : 27,40 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/min@59::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -2936,7 +2962,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -2947,13 +2973,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -2974,30 +3000,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -3006,7 +3032,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/min@59::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -3023,18 +3049,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 59,59 : 27,40 + .line 59,59 : 27,40 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -3047,11 +3073,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method min@59::Close @@ -3146,6 +3172,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3158,7 +3186,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 59,59 : 47,58 + .line 59,59 : 47,58 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -3175,6 +3203,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -3193,7 +3223,7 @@ .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] valuetype [mscorlib]System.Decimal min, [2] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) - .line 58,58 : 38,39 + .line 58,58 : 38,39 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 @@ -3217,7 +3247,7 @@ IL_001f: callvirt instance !!2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::MinBy(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) IL_0024: stloc.1 - .line 60,60 : 9,28 + .line 60,60 : 9,28 '' IL_0025: ldarg.0 IL_0026: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/'categories2@58-3'::builder@ IL_002b: ldloc.0 @@ -3237,6 +3267,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3251,7 +3283,7 @@ .maxstack 6 .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] valuetype [mscorlib]System.Decimal min) - .line 60,60 : 17,27 + .line 60,60 : 17,27 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2,valuetype [mscorlib]System.Decimal>::get_Item1() IL_0006: stloc.0 @@ -3276,6 +3308,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -3292,11 +3326,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] class [Utils]Utils/Product p) - .line 66,66 : 9,29 + .line 66,66 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 67,67 : 9,32 + .line 67,67 : 9,32 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/categories3@66::builder@ IL_0009: ldloc.0 @@ -3313,6 +3347,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3325,7 +3361,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 67,67 : 20,21 + .line 67,67 : 20,21 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -3339,6 +3375,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3351,7 +3389,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 67,67 : 22,32 + .line 67,67 : 22,32 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -3380,7 +3418,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 68,68 : 46,57 + .line 68,68 : 46,57 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -3450,7 +3488,7 @@ { // Code size 200 (0xc8) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/cheapestProducts@69::pc IL_0006: ldc.i4.1 @@ -3467,25 +3505,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 69,69 : 40,53 + .line 69,69 : 40,53 '' IL_0031: ldarg.0 IL_0032: ldarg.0 IL_0033: ldfld class [System.Core]System.Linq.IGrouping`2 Linq101Aggregates01/cheapestProducts@69::g @@ -3495,7 +3533,7 @@ IL_0047: ldarg.0 IL_0048: ldc.i4.1 IL_0049: stfld int32 Linq101Aggregates01/cheapestProducts@69::pc - .line 69,69 : 40,53 + .line 69,69 : 40,53 '' IL_004e: ldarg.0 IL_004f: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/cheapestProducts@69::'enum' IL_0054: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -3506,7 +3544,7 @@ IL_005d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/cheapestProducts@69::'enum' IL_0062: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0067: stfld class [Utils]Utils/Product Linq101Aggregates01/cheapestProducts@69::_arg3 - .line 69,69 : 40,53 + .line 69,69 : 40,53 '' IL_006c: ldarg.0 IL_006d: ldarg.0 IL_006e: ldfld class [Utils]Utils/Product Linq101Aggregates01/cheapestProducts@69::_arg3 @@ -3514,7 +3552,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Aggregates01/cheapestProducts@69::pc - .line 69,69 : 54,79 + .line 69,69 : 54,79 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Aggregates01/cheapestProducts@69::x @@ -3525,18 +3563,18 @@ IL_008d: ldarg.0 IL_008e: ldnull IL_008f: stfld class [Utils]Utils/Product Linq101Aggregates01/cheapestProducts@69::x - .line 69,69 : 40,53 + .line 69,69 : 40,53 '' IL_0094: ldarg.0 IL_0095: ldnull IL_0096: stfld class [Utils]Utils/Product Linq101Aggregates01/cheapestProducts@69::_arg3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_004e IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Aggregates01/cheapestProducts@69::pc - .line 69,69 : 40,53 + .line 69,69 : 40,53 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/cheapestProducts@69::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -3562,7 +3600,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -3573,13 +3611,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -3600,30 +3638,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -3632,7 +3670,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/cheapestProducts@69::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -3649,18 +3687,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 69,69 : 40,53 + .line 69,69 : 40,53 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -3673,11 +3711,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method cheapestProducts@69::Close @@ -3773,6 +3811,8 @@ .method assembly specialname rtspecialname instance void .ctor(valuetype [mscorlib]System.Decimal min) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -3788,7 +3828,7 @@ { // Code size 19 (0x13) .maxstack 8 - .line 69,69 : 61,78 + .line 69,69 : 61,78 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: callvirt instance valuetype [mscorlib]System.Decimal [Utils]Utils/Product::get_UnitPrice() @@ -3808,6 +3848,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -3827,11 +3869,11 @@ [1] valuetype [mscorlib]System.Decimal min, [2] class [mscorlib]System.Collections.Generic.IEnumerable`1 cheapestProducts, [3] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) - .line 67,67 : 38,39 + .line 67,67 : 38,39 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 68,68 : 9,58 + .line 68,68 : 9,58 '' IL_0003: ldloc.0 IL_0004: newobj instance void Linq101Aggregates01/'min@68-2'::.ctor() IL_0009: ldftn instance valuetype [mscorlib]System.Decimal Linq101Aggregates01/'min@68-2'::Invoke(class [Utils]Utils/Product) @@ -3840,7 +3882,7 @@ IL_0014: call valuetype [mscorlib]System.Decimal [System.Core]System.Linq.Enumerable::Min(class [mscorlib]System.Collections.Generic.IEnumerable`1, class [mscorlib]System.Func`2) IL_0019: stloc.1 - .line 69,69 : 13,29 + .line 70,70 : 9,41 '' IL_001a: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_001f: stloc.3 IL_0020: ldloc.3 @@ -3863,7 +3905,7 @@ class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) IL_003c: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2::get_Source() IL_0041: stloc.2 - .line 70,70 : 9,41 + .line 70,70 : 9,41 '' IL_0042: ldarg.0 IL_0043: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/'categories3@67-3'::builder@ IL_0048: ldloc.0 @@ -3885,6 +3927,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3900,7 +3944,7 @@ .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] valuetype [mscorlib]System.Decimal min, [2] class [mscorlib]System.Collections.Generic.IEnumerable`1 cheapestProducts) - .line 70,70 : 17,40 + .line 70,70 : 17,40 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`3,valuetype [mscorlib]System.Decimal,class [mscorlib]System.Collections.Generic.IEnumerable`1>::get_Item1() IL_0006: stloc.0 @@ -3976,7 +4020,7 @@ { // Code size 196 (0xc4) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/maxNum@74::pc IL_0006: ldc.i4.1 @@ -3993,25 +4037,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 74,74 : 22,41 + .line 74,74 : 22,41 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_numbers() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -4020,7 +4064,7 @@ IL_0043: ldarg.0 IL_0044: ldc.i4.1 IL_0045: stfld int32 Linq101Aggregates01/maxNum@74::pc - .line 74,74 : 22,41 + .line 74,74 : 22,41 '' IL_004a: ldarg.0 IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxNum@74::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -4031,7 +4075,7 @@ IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxNum@74::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0063: stfld int32 Linq101Aggregates01/maxNum@74::_arg1 - .line 74,74 : 22,41 + .line 74,74 : 22,41 '' IL_0068: ldarg.0 IL_0069: ldarg.0 IL_006a: ldfld int32 Linq101Aggregates01/maxNum@74::_arg1 @@ -4039,7 +4083,7 @@ IL_0074: ldarg.0 IL_0075: ldc.i4.2 IL_0076: stfld int32 Linq101Aggregates01/maxNum@74::pc - .line 74,74 : 42,49 + .line 74,74 : 42,49 '' IL_007b: ldarg.0 IL_007c: ldarg.0 IL_007d: ldfld int32 Linq101Aggregates01/maxNum@74::n @@ -4050,18 +4094,18 @@ IL_0089: ldarg.0 IL_008a: ldc.i4.0 IL_008b: stfld int32 Linq101Aggregates01/maxNum@74::n - .line 74,74 : 22,41 + .line 74,74 : 22,41 '' IL_0090: ldarg.0 IL_0091: ldc.i4.0 IL_0092: stfld int32 Linq101Aggregates01/maxNum@74::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 IL_009c: stfld int32 Linq101Aggregates01/maxNum@74::pc - .line 74,74 : 22,41 + .line 74,74 : 22,41 '' IL_00a1: ldarg.0 IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxNum@74::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -4087,7 +4131,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -4098,13 +4142,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -4125,30 +4169,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -4157,7 +4201,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxNum@74::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -4174,18 +4218,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 74,74 : 22,41 + .line 74,74 : 22,41 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -4198,11 +4242,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method maxNum@74::Close @@ -4294,6 +4338,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -4306,7 +4352,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 74,74 : 48,49 + .line 74,74 : 48,49 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -4369,7 +4415,7 @@ { // Code size 196 (0xc4) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/longestLength@77::pc IL_0006: ldc.i4.1 @@ -4386,25 +4432,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 77,77 : 29,46 + .line 77,77 : 29,46 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_words() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -4413,7 +4459,7 @@ IL_0043: ldarg.0 IL_0044: ldc.i4.1 IL_0045: stfld int32 Linq101Aggregates01/longestLength@77::pc - .line 77,77 : 29,46 + .line 77,77 : 29,46 '' IL_004a: ldarg.0 IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/longestLength@77::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -4424,7 +4470,7 @@ IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/longestLength@77::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0063: stfld string Linq101Aggregates01/longestLength@77::_arg1 - .line 77,77 : 29,46 + .line 77,77 : 29,46 '' IL_0068: ldarg.0 IL_0069: ldarg.0 IL_006a: ldfld string Linq101Aggregates01/longestLength@77::_arg1 @@ -4432,7 +4478,7 @@ IL_0074: ldarg.0 IL_0075: ldc.i4.2 IL_0076: stfld int32 Linq101Aggregates01/longestLength@77::pc - .line 77,77 : 47,61 + .line 77,77 : 47,61 '' IL_007b: ldarg.0 IL_007c: ldarg.0 IL_007d: ldfld string Linq101Aggregates01/longestLength@77::w @@ -4443,18 +4489,18 @@ IL_0089: ldarg.0 IL_008a: ldnull IL_008b: stfld string Linq101Aggregates01/longestLength@77::w - .line 77,77 : 29,46 + .line 77,77 : 29,46 '' IL_0090: ldarg.0 IL_0091: ldnull IL_0092: stfld string Linq101Aggregates01/longestLength@77::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 IL_009c: stfld int32 Linq101Aggregates01/longestLength@77::pc - .line 77,77 : 29,46 + .line 77,77 : 29,46 '' IL_00a1: ldarg.0 IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/longestLength@77::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -4480,7 +4526,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -4491,13 +4537,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -4518,30 +4564,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -4550,7 +4596,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/longestLength@77::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -4567,18 +4613,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 77,77 : 29,46 + .line 77,77 : 29,46 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -4591,11 +4637,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method longestLength@77::Close @@ -4687,6 +4733,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -4699,7 +4747,7 @@ { // Code size 8 (0x8) .maxstack 8 - .line 77,77 : 53,61 + .line 77,77 : 53,61 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: callvirt instance int32 [mscorlib]System.String::get_Length() @@ -4715,6 +4763,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -4731,11 +4781,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] class [Utils]Utils/Product p) - .line 82,82 : 9,29 + .line 82,82 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 83,83 : 9,32 + .line 83,83 : 9,32 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/categories4@82::builder@ IL_0009: ldloc.0 @@ -4752,6 +4802,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -4764,7 +4816,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 83,83 : 20,21 + .line 83,83 : 20,21 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -4778,6 +4830,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -4790,7 +4844,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 83,83 : 22,32 + .line 83,83 : 22,32 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -4860,7 +4914,7 @@ { // Code size 200 (0xc8) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/mostExpensivePrice@84::pc IL_0006: ldc.i4.1 @@ -4877,25 +4931,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 84,84 : 42,55 + .line 84,84 : 42,55 '' IL_0031: ldarg.0 IL_0032: ldarg.0 IL_0033: ldfld class [System.Core]System.Linq.IGrouping`2 Linq101Aggregates01/mostExpensivePrice@84::g @@ -4905,7 +4959,7 @@ IL_0047: ldarg.0 IL_0048: ldc.i4.1 IL_0049: stfld int32 Linq101Aggregates01/mostExpensivePrice@84::pc - .line 84,84 : 42,55 + .line 84,84 : 42,55 '' IL_004e: ldarg.0 IL_004f: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensivePrice@84::'enum' IL_0054: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -4916,7 +4970,7 @@ IL_005d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensivePrice@84::'enum' IL_0062: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0067: stfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensivePrice@84::_arg3 - .line 84,84 : 42,55 + .line 84,84 : 42,55 '' IL_006c: ldarg.0 IL_006d: ldarg.0 IL_006e: ldfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensivePrice@84::_arg3 @@ -4924,7 +4978,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Aggregates01/mostExpensivePrice@84::pc - .line 84,84 : 56,73 + .line 84,84 : 56,73 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensivePrice@84::x @@ -4935,18 +4989,18 @@ IL_008d: ldarg.0 IL_008e: ldnull IL_008f: stfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensivePrice@84::x - .line 84,84 : 42,55 + .line 84,84 : 42,55 '' IL_0094: ldarg.0 IL_0095: ldnull IL_0096: stfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensivePrice@84::_arg3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_004e IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Aggregates01/mostExpensivePrice@84::pc - .line 84,84 : 42,55 + .line 84,84 : 42,55 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensivePrice@84::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -4972,7 +5026,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -4983,13 +5037,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -5010,30 +5064,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -5042,7 +5096,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensivePrice@84::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -5059,18 +5113,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 84,84 : 42,55 + .line 84,84 : 42,55 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -5083,11 +5137,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method mostExpensivePrice@84::Close @@ -5182,6 +5236,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -5194,7 +5250,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 84,84 : 62,73 + .line 84,84 : 62,73 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -5211,6 +5267,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -5229,7 +5287,7 @@ .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] valuetype [mscorlib]System.Decimal mostExpensivePrice, [2] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) - .line 83,83 : 38,39 + .line 83,83 : 38,39 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 @@ -5253,7 +5311,7 @@ IL_001f: callvirt instance !!2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::MaxBy(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) IL_0024: stloc.1 - .line 85,85 : 9,43 + .line 85,85 : 9,43 '' IL_0025: ldarg.0 IL_0026: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/'categories4@83-3'::builder@ IL_002b: ldloc.0 @@ -5273,6 +5331,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -5287,7 +5347,7 @@ .maxstack 6 .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] valuetype [mscorlib]System.Decimal mostExpensivePrice) - .line 85,85 : 17,42 + .line 85,85 : 17,42 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2,valuetype [mscorlib]System.Decimal>::get_Item1() IL_0006: stloc.0 @@ -5312,6 +5372,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -5328,11 +5390,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] class [Utils]Utils/Product p) - .line 91,91 : 9,29 + .line 91,91 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 92,92 : 9,32 + .line 92,92 : 9,32 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/categories5@91::builder@ IL_0009: ldloc.0 @@ -5349,6 +5411,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -5361,7 +5425,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 92,92 : 20,21 + .line 92,92 : 20,21 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -5375,6 +5439,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -5387,7 +5453,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 92,92 : 22,32 + .line 92,92 : 22,32 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -5457,7 +5523,7 @@ { // Code size 200 (0xc8) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/maxPrice@93::pc IL_0006: ldc.i4.1 @@ -5474,25 +5540,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 93,93 : 32,45 + .line 93,93 : 32,45 '' IL_0031: ldarg.0 IL_0032: ldarg.0 IL_0033: ldfld class [System.Core]System.Linq.IGrouping`2 Linq101Aggregates01/maxPrice@93::g @@ -5502,7 +5568,7 @@ IL_0047: ldarg.0 IL_0048: ldc.i4.1 IL_0049: stfld int32 Linq101Aggregates01/maxPrice@93::pc - .line 93,93 : 32,45 + .line 93,93 : 32,45 '' IL_004e: ldarg.0 IL_004f: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxPrice@93::'enum' IL_0054: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -5513,7 +5579,7 @@ IL_005d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxPrice@93::'enum' IL_0062: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0067: stfld class [Utils]Utils/Product Linq101Aggregates01/maxPrice@93::_arg3 - .line 93,93 : 32,45 + .line 93,93 : 32,45 '' IL_006c: ldarg.0 IL_006d: ldarg.0 IL_006e: ldfld class [Utils]Utils/Product Linq101Aggregates01/maxPrice@93::_arg3 @@ -5521,7 +5587,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Aggregates01/maxPrice@93::pc - .line 93,93 : 46,63 + .line 93,93 : 46,63 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Aggregates01/maxPrice@93::x @@ -5532,18 +5598,18 @@ IL_008d: ldarg.0 IL_008e: ldnull IL_008f: stfld class [Utils]Utils/Product Linq101Aggregates01/maxPrice@93::x - .line 93,93 : 32,45 + .line 93,93 : 32,45 '' IL_0094: ldarg.0 IL_0095: ldnull IL_0096: stfld class [Utils]Utils/Product Linq101Aggregates01/maxPrice@93::_arg3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_004e IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Aggregates01/maxPrice@93::pc - .line 93,93 : 32,45 + .line 93,93 : 32,45 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxPrice@93::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -5569,7 +5635,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -5580,13 +5646,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -5607,30 +5673,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -5639,7 +5705,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/maxPrice@93::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -5656,18 +5722,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 93,93 : 32,45 + .line 93,93 : 32,45 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -5680,11 +5746,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method maxPrice@93::Close @@ -5779,6 +5845,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -5791,7 +5859,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 93,93 : 52,63 + .line 93,93 : 52,63 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -5861,7 +5929,7 @@ { // Code size 200 (0xc8) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/mostExpensiveProducts@94::pc IL_0006: ldc.i4.1 @@ -5878,25 +5946,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 94,94 : 45,58 + .line 94,94 : 45,58 '' IL_0031: ldarg.0 IL_0032: ldarg.0 IL_0033: ldfld class [System.Core]System.Linq.IGrouping`2 Linq101Aggregates01/mostExpensiveProducts@94::g @@ -5906,7 +5974,7 @@ IL_0047: ldarg.0 IL_0048: ldc.i4.1 IL_0049: stfld int32 Linq101Aggregates01/mostExpensiveProducts@94::pc - .line 94,94 : 45,58 + .line 94,94 : 45,58 '' IL_004e: ldarg.0 IL_004f: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensiveProducts@94::'enum' IL_0054: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -5917,7 +5985,7 @@ IL_005d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensiveProducts@94::'enum' IL_0062: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0067: stfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensiveProducts@94::_arg4 - .line 94,94 : 45,58 + .line 94,94 : 45,58 '' IL_006c: ldarg.0 IL_006d: ldarg.0 IL_006e: ldfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensiveProducts@94::_arg4 @@ -5925,7 +5993,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Aggregates01/mostExpensiveProducts@94::pc - .line 94,94 : 59,89 + .line 94,94 : 59,89 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensiveProducts@94::x @@ -5936,18 +6004,18 @@ IL_008d: ldarg.0 IL_008e: ldnull IL_008f: stfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensiveProducts@94::x - .line 94,94 : 45,58 + .line 94,94 : 45,58 '' IL_0094: ldarg.0 IL_0095: ldnull IL_0096: stfld class [Utils]Utils/Product Linq101Aggregates01/mostExpensiveProducts@94::_arg4 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_004e IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Aggregates01/mostExpensiveProducts@94::pc - .line 94,94 : 45,58 + .line 94,94 : 45,58 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensiveProducts@94::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -5973,7 +6041,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -5984,13 +6052,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -6011,30 +6079,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -6043,7 +6111,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/mostExpensiveProducts@94::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -6060,18 +6128,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 94,94 : 45,58 + .line 94,94 : 45,58 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -6084,11 +6152,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method mostExpensiveProducts@94::Close @@ -6184,6 +6252,8 @@ .method assembly specialname rtspecialname instance void .ctor(valuetype [mscorlib]System.Decimal maxPrice) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -6199,7 +6269,7 @@ { // Code size 19 (0x13) .maxstack 8 - .line 94,94 : 66,88 + .line 94,94 : 66,88 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: callvirt instance valuetype [mscorlib]System.Decimal [Utils]Utils/Product::get_UnitPrice() @@ -6219,6 +6289,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -6239,7 +6311,7 @@ [2] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@, [3] class [mscorlib]System.Collections.Generic.IEnumerable`1 mostExpensiveProducts, [4] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_4) - .line 92,92 : 38,39 + .line 92,92 : 38,39 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 @@ -6263,7 +6335,7 @@ IL_001f: callvirt instance !!2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::MaxBy(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) IL_0024: stloc.1 - .line 94,94 : 13,34 + .line 95,95 : 9,46 '' IL_0025: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_002a: stloc.s V_4 IL_002c: ldloc.s V_4 @@ -6286,7 +6358,7 @@ class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) IL_0049: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2::get_Source() IL_004e: stloc.3 - .line 95,95 : 9,46 + .line 95,95 : 9,46 '' IL_004f: ldarg.0 IL_0050: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/'categories5@92-3'::builder@ IL_0055: ldloc.0 @@ -6308,6 +6380,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -6323,7 +6397,7 @@ .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] valuetype [mscorlib]System.Decimal maxPrice, [2] class [mscorlib]System.Collections.Generic.IEnumerable`1 mostExpensiveProducts) - .line 95,95 : 17,45 + .line 95,95 : 17,45 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`3,valuetype [mscorlib]System.Decimal,class [mscorlib]System.Collections.Generic.IEnumerable`1>::get_Item1() IL_0006: stloc.0 @@ -6399,7 +6473,7 @@ { // Code size 223 (0xdf) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/averageNum@100::pc IL_0006: ldc.i4.1 @@ -6416,25 +6490,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_00ad - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008c - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00ce - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 100,100 : 26,46 + .line 100,100 : 26,46 '' IL_0031: ldarg.0 IL_0032: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Aggregates01::get_numbers2() IL_0037: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 @@ -6443,7 +6517,7 @@ IL_0046: ldarg.0 IL_0047: ldc.i4.1 IL_0048: stfld int32 Linq101Aggregates01/averageNum@100::pc - .line 100,100 : 26,46 + .line 100,100 : 26,46 '' IL_004d: ldarg.0 IL_004e: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averageNum@100::'enum' IL_0053: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -6454,7 +6528,7 @@ IL_005c: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averageNum@100::'enum' IL_0061: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0066: stfld float64 Linq101Aggregates01/averageNum@100::_arg1 - .line 100,100 : 26,46 + .line 100,100 : 26,46 '' IL_006b: ldarg.0 IL_006c: ldarg.0 IL_006d: ldfld float64 Linq101Aggregates01/averageNum@100::_arg1 @@ -6462,7 +6536,7 @@ IL_0077: ldarg.0 IL_0078: ldc.i4.2 IL_0079: stfld int32 Linq101Aggregates01/averageNum@100::pc - .line 100,100 : 47,58 + .line 100,100 : 47,58 '' IL_007e: ldarg.0 IL_007f: ldarg.0 IL_0080: ldfld float64 Linq101Aggregates01/averageNum@100::n @@ -6473,18 +6547,18 @@ IL_008c: ldarg.0 IL_008d: ldc.r8 0.0 IL_0096: stfld float64 Linq101Aggregates01/averageNum@100::n - .line 100,100 : 26,46 + .line 100,100 : 26,46 '' IL_009b: ldarg.0 IL_009c: ldc.r8 0.0 IL_00a5: stfld float64 Linq101Aggregates01/averageNum@100::_arg1 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00aa: nop IL_00ab: br.s IL_004d IL_00ad: ldarg.0 IL_00ae: ldc.i4.3 IL_00af: stfld int32 Linq101Aggregates01/averageNum@100::pc - .line 100,100 : 26,46 + .line 100,100 : 26,46 '' IL_00b4: ldarg.0 IL_00b5: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averageNum@100::'enum' IL_00ba: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -6510,7 +6584,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -6521,13 +6595,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0091 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -6548,30 +6622,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -6580,7 +6654,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averageNum@100::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -6597,18 +6671,18 @@ { IL_007d: castclass [mscorlib]System.Exception IL_0082: stloc.2 - .line 100,100 : 26,46 + .line 100,100 : 26,46 '' IL_0083: ldloc.2 IL_0084: stloc.0 IL_0085: ldnull IL_0086: stloc.1 IL_0087: leave.s IL_0089 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0089: ldloc.1 IL_008a: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_008b: nop IL_008c: br IL_0002 @@ -6621,11 +6695,11 @@ IL_0099: br.s IL_009d - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: ldloc.0 IL_009c: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009d: ret } // end of method averageNum@100::Close @@ -6717,6 +6791,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -6729,7 +6805,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 100,100 : 57,58 + .line 100,100 : 57,58 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -6744,6 +6820,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -6761,16 +6839,16 @@ .maxstack 7 .locals init ([0] string w, [1] float64 wl) - .line 105,105 : 9,26 + .line 105,105 : 9,26 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 106,106 : 9,35 + .line 106,106 : 9,35 '' IL_0003: ldloc.0 IL_0004: callvirt instance int32 [mscorlib]System.String::get_Length() IL_0009: conv.r8 IL_000a: stloc.1 - .line 107,107 : 9,21 + .line 107,107 : 9,21 '' IL_000b: ldarg.0 IL_000c: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/averageLength@105::builder@ IL_0011: ldloc.0 @@ -6790,6 +6868,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -6804,7 +6884,7 @@ .maxstack 5 .locals init ([0] string w, [1] float64 wl) - .line 107,107 : 19,21 + .line 107,107 : 19,21 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -6825,6 +6905,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -6841,11 +6923,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] class [Utils]Utils/Product p) - .line 113,113 : 9,29 + .line 113,113 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 114,114 : 9,32 + .line 114,114 : 9,32 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/categories6@113::builder@ IL_0009: ldloc.0 @@ -6862,6 +6944,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -6874,7 +6958,7 @@ { // Code size 3 (0x3) .maxstack 8 - .line 114,114 : 20,21 + .line 114,114 : 20,21 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ret @@ -6888,6 +6972,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -6900,7 +6986,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 114,114 : 22,32 + .line 114,114 : 22,32 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -6970,7 +7056,7 @@ { // Code size 200 (0xc8) .maxstack 6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Aggregates01/averagePrice@115::pc IL_0006: ldc.i4.1 @@ -6987,25 +7073,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_008d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 115,115 : 36,49 + .line 115,115 : 36,49 '' IL_0031: ldarg.0 IL_0032: ldarg.0 IL_0033: ldfld class [System.Core]System.Linq.IGrouping`2 Linq101Aggregates01/averagePrice@115::g @@ -7015,7 +7101,7 @@ IL_0047: ldarg.0 IL_0048: ldc.i4.1 IL_0049: stfld int32 Linq101Aggregates01/averagePrice@115::pc - .line 115,115 : 36,49 + .line 115,115 : 36,49 '' IL_004e: ldarg.0 IL_004f: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averagePrice@115::'enum' IL_0054: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -7026,7 +7112,7 @@ IL_005d: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averagePrice@115::'enum' IL_0062: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0067: stfld class [Utils]Utils/Product Linq101Aggregates01/averagePrice@115::_arg3 - .line 115,115 : 36,49 + .line 115,115 : 36,49 '' IL_006c: ldarg.0 IL_006d: ldarg.0 IL_006e: ldfld class [Utils]Utils/Product Linq101Aggregates01/averagePrice@115::_arg3 @@ -7034,7 +7120,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Aggregates01/averagePrice@115::pc - .line 115,115 : 50,71 + .line 115,115 : 50,71 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Aggregates01/averagePrice@115::x @@ -7045,18 +7131,18 @@ IL_008d: ldarg.0 IL_008e: ldnull IL_008f: stfld class [Utils]Utils/Product Linq101Aggregates01/averagePrice@115::x - .line 115,115 : 36,49 + .line 115,115 : 36,49 '' IL_0094: ldarg.0 IL_0095: ldnull IL_0096: stfld class [Utils]Utils/Product Linq101Aggregates01/averagePrice@115::_arg3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_004e IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Aggregates01/averagePrice@115::pc - .line 115,115 : 36,49 + .line 115,115 : 36,49 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averagePrice@115::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -7082,7 +7168,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -7093,13 +7179,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -7120,30 +7206,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -7152,7 +7238,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Aggregates01/averagePrice@115::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -7169,18 +7255,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 115,115 : 36,49 + .line 115,115 : 36,49 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -7193,11 +7279,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method averagePrice@115::Close @@ -7292,6 +7378,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -7304,7 +7392,7 @@ { // Code size 10 (0xa) .maxstack 8 - .line 115,115 : 60,71 + .line 115,115 : 60,71 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: tail. @@ -7321,6 +7409,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -7351,7 +7441,7 @@ [12] valuetype [mscorlib]System.Decimal V_12, [13] int32 V_13, [14] class [mscorlib]System.IDisposable V_14) - .line 114,114 : 38,39 + .line 114,114 : 38,39 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 @@ -7391,17 +7481,17 @@ IL_004b: br.s IL_0060 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004d: ldstr "source" IL_0052: newobj instance void [mscorlib]System.ArgumentNullException::.ctor(string) IL_0057: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Raise(class [mscorlib]System.Exception) IL_005c: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_005d: nop IL_005e: br.s IL_0061 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0060: nop IL_0061: ldloc.s V_7 IL_0063: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1 class [mscorlib]System.Collections.Generic.IEnumerable`1::GetEnumerator() @@ -7433,12 +7523,12 @@ IL_0092: call valuetype [mscorlib]System.Decimal [mscorlib]System.Decimal::op_Addition(valuetype [mscorlib]System.Decimal, valuetype [mscorlib]System.Decimal) IL_0097: stloc.s V_10 - .line 115,115 : 50,71 + .line 115,115 : 50,71 '' IL_0099: ldloc.s V_11 IL_009b: ldc.i4.1 IL_009c: add IL_009d: stloc.s V_11 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009f: nop IL_00a0: br.s IL_0079 @@ -7449,17 +7539,17 @@ IL_00a8: br.s IL_00bd - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00aa: ldstr "source" IL_00af: newobj instance void [mscorlib]System.InvalidOperationException::.ctor(string) IL_00b4: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Raise(class [mscorlib]System.Exception) IL_00b9: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00ba: nop IL_00bb: br.s IL_00be - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_00bd: nop IL_00be: ldloc.s V_10 IL_00c0: stloc.s V_12 @@ -7486,21 +7576,21 @@ IL_00e7: br.s IL_00f3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00e9: ldloc.s V_14 IL_00eb: callvirt instance void [mscorlib]System.IDisposable::Dispose() IL_00f0: ldnull IL_00f1: pop IL_00f2: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00f3: ldnull IL_00f4: pop IL_00f5: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_00f6: ldloc.s V_9 IL_00f8: stloc.1 - .line 116,116 : 9,37 + .line 116,116 : 9,37 '' IL_00f9: ldarg.0 IL_00fa: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Aggregates01/'categories6@114-3'::builder@ IL_00ff: ldloc.0 @@ -7520,6 +7610,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -7534,7 +7626,7 @@ .maxstack 6 .locals init ([0] class [System.Core]System.Linq.IGrouping`2 g, [1] valuetype [mscorlib]System.Decimal averagePrice) - .line 116,116 : 17,36 + .line 116,116 : 17,36 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2,valuetype [mscorlib]System.Decimal>::get_Item1() IL_0006: stloc.0 @@ -7974,7 +8066,7 @@ [74] int32 V_74, [75] class [mscorlib]System.IDisposable V_75, [76] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_76) - .line 8,8 : 1,31 + .line 8,8 : 1,31 '' IL_0000: nop IL_0001: ldc.i4.2 IL_0002: ldc.i4.2 @@ -7995,7 +8087,7 @@ IL_0024: dup IL_0025: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Aggregates01::factorsOf300@8 IL_002a: stloc.0 - .line 10,14 : 1,20 + .line 10,14 : 1,20 '' IL_002b: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0030: stloc.s builder@ IL_0032: ldloc.s builder@ @@ -8016,7 +8108,7 @@ IL_0052: dup IL_0053: stsfld int32 ''.$Linq101Aggregates01::uniqueFactors@10 IL_0058: stloc.1 - .line 17,17 : 1,47 + .line 17,17 : 1,47 '' IL_0059: ldc.i4.5 IL_005a: ldc.i4.4 IL_005b: ldc.i4.1 @@ -8090,7 +8182,7 @@ IL_00f1: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() IL_00f6: brfalse.s IL_010e - .line 22,22 : 9,16 + .line 22,22 : 9,16 '' IL_00f8: ldloc.s V_29 IL_00fa: ldloc.s V_25 IL_00fc: ldloc.s V_27 @@ -8098,7 +8190,7 @@ IL_0103: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) IL_0108: add.ovf IL_0109: stloc.s V_29 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_010b: nop IL_010c: br.s IL_00ef @@ -8119,23 +8211,23 @@ IL_0123: br.s IL_012f - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0125: ldloc.s V_30 IL_0127: callvirt instance void [mscorlib]System.IDisposable::Dispose() IL_012c: ldnull IL_012d: pop IL_012e: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_012f: ldnull IL_0130: pop IL_0131: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0132: ldloc.s V_28 IL_0134: dup IL_0135: stsfld int32 ''.$Linq101Aggregates01::numSum@19 IL_013a: stloc.3 - .line 26,26 : 1,45 + .line 26,26 : 1,45 '' IL_013b: ldstr "cherry" IL_0140: ldstr "apple" IL_0145: ldstr "blueberry" @@ -8188,7 +8280,7 @@ IL_01b5: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() IL_01ba: brfalse.s IL_01d2 - .line 31,31 : 9,25 + .line 31,31 : 9,25 '' IL_01bc: ldloc.s V_39 IL_01be: ldloc.s V_35 IL_01c0: ldloc.s V_37 @@ -8196,7 +8288,7 @@ IL_01c7: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) IL_01cc: add.ovf IL_01cd: stloc.s V_39 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_01cf: nop IL_01d0: br.s IL_01b3 @@ -8217,28 +8309,28 @@ IL_01e7: br.s IL_01f3 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_01e9: ldloc.s V_40 IL_01eb: callvirt instance void [mscorlib]System.IDisposable::Dispose() IL_01f0: ldnull IL_01f1: pop IL_01f2: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_01f3: ldnull IL_01f4: pop IL_01f5: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_01f6: ldloc.s V_38 IL_01f8: dup IL_01f9: stsfld int32 ''.$Linq101Aggregates01::totalChars@28 IL_01fe: stloc.s totalChars - .line 35,35 : 1,32 + .line 35,35 : 1,32 '' IL_0200: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getProductList() IL_0205: dup IL_0206: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Aggregates01::products@35 IL_020b: stloc.s products - .line 37,46 : 1,21 + .line 37,46 : 1,21 '' IL_020d: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0212: stloc.s V_41 IL_0214: ldloc.s V_41 @@ -8310,7 +8402,7 @@ IL_02bc: dup IL_02bd: stsfld int32 ''.$Linq101Aggregates01::shortestWord@52 IL_02c2: stloc.s shortestWord - .line 55,61 : 1,21 + .line 55,61 : 1,21 '' IL_02c4: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_02c9: stloc.s V_44 IL_02cb: ldloc.s V_44 @@ -8342,7 +8434,7 @@ IL_031f: dup IL_0320: stsfld class [mscorlib]System.Tuple`2[] ''.$Linq101Aggregates01::categories2@55 IL_0325: stloc.s categories2 - .line 64,71 : 1,21 + .line 64,71 : 1,21 '' IL_0327: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_032c: stloc.s V_45 IL_032e: ldloc.s V_45 @@ -8414,7 +8506,7 @@ IL_03d6: dup IL_03d7: stsfld int32 ''.$Linq101Aggregates01::longestLength@77 IL_03dc: stloc.s longestLength - .line 80,86 : 1,21 + .line 80,86 : 1,21 '' IL_03de: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_03e3: stloc.s V_48 IL_03e5: ldloc.s V_48 @@ -8446,7 +8538,7 @@ IL_0439: dup IL_043a: stsfld class [mscorlib]System.Tuple`2[] ''.$Linq101Aggregates01::categories4@80 IL_043f: stloc.s categories4 - .line 89,96 : 1,21 + .line 89,96 : 1,21 '' IL_0441: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0446: stloc.s V_49 IL_0448: ldloc.s V_49 @@ -8478,7 +8570,7 @@ IL_049c: dup IL_049d: stsfld class [mscorlib]System.Tuple`2>[] ''.$Linq101Aggregates01::categories5@89 IL_04a2: stloc.s categories5 - .line 99,99 : 1,66 + .line 99,99 : 1,66 '' IL_04a4: ldc.r8 5. IL_04ad: ldc.r8 4. IL_04b6: ldc.r8 1. @@ -8547,17 +8639,17 @@ IL_059f: br.s IL_05b4 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_05a1: ldstr "source" IL_05a6: newobj instance void [mscorlib]System.ArgumentNullException::.ctor(string) IL_05ab: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Raise(class [mscorlib]System.Exception) IL_05b0: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_05b1: nop IL_05b2: br.s IL_05b5 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_05b4: nop IL_05b5: ldloc.s V_55 IL_05b7: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1 class [mscorlib]System.Collections.Generic.IEnumerable`1::GetEnumerator() @@ -8579,12 +8671,12 @@ IL_05e0: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) IL_05e5: add IL_05e6: stloc.s V_58 - .line 100,100 : 47,58 + .line 100,100 : 47,58 '' IL_05e8: ldloc.s V_59 IL_05ea: ldc.i4.1 IL_05eb: add IL_05ec: stloc.s V_59 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_05ee: nop IL_05ef: br.s IL_05cc @@ -8595,17 +8687,17 @@ IL_05f7: br.s IL_060c - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_05f9: ldstr "source" IL_05fe: newobj instance void [mscorlib]System.InvalidOperationException::.ctor(string) IL_0603: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Raise(class [mscorlib]System.Exception) IL_0608: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0609: nop IL_060a: br.s IL_060d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_060c: nop IL_060d: ldloc.s V_58 IL_060f: stloc.s V_60 @@ -8631,17 +8723,17 @@ IL_062e: br.s IL_063a - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0630: ldloc.s V_62 IL_0632: callvirt instance void [mscorlib]System.IDisposable::Dispose() IL_0637: ldnull IL_0638: pop IL_0639: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_063a: ldnull IL_063b: pop IL_063c: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_063d: ldloc.s V_57 IL_063f: dup @@ -8679,17 +8771,17 @@ IL_06a1: br.s IL_06b6 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_06a3: ldstr "source" IL_06a8: newobj instance void [mscorlib]System.ArgumentNullException::.ctor(string) IL_06ad: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Raise(class [mscorlib]System.Exception) IL_06b2: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_06b3: nop IL_06b4: br.s IL_06b7 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_06b6: nop IL_06b7: ldloc.s V_68 IL_06b9: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1 class [mscorlib]System.Collections.Generic.IEnumerable`1>::GetEnumerator() @@ -8711,12 +8803,12 @@ IL_06e2: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,float64>::Invoke(!0) IL_06e7: add IL_06e8: stloc.s V_71 - .line 107,107 : 9,21 + .line 107,107 : 9,21 '' IL_06ea: ldloc.s V_72 IL_06ec: ldc.i4.1 IL_06ed: add IL_06ee: stloc.s V_72 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_06f0: nop IL_06f1: br.s IL_06ce @@ -8727,17 +8819,17 @@ IL_06f9: br.s IL_070e - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_06fb: ldstr "source" IL_0700: newobj instance void [mscorlib]System.InvalidOperationException::.ctor(string) IL_0705: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Raise(class [mscorlib]System.Exception) IL_070a: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_070b: nop IL_070c: br.s IL_070f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_070e: nop IL_070f: ldloc.s V_71 IL_0711: stloc.s V_73 @@ -8763,23 +8855,23 @@ IL_0730: br.s IL_073c - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0732: ldloc.s V_75 IL_0734: callvirt instance void [mscorlib]System.IDisposable::Dispose() IL_0739: ldnull IL_073a: pop IL_073b: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_073c: ldnull IL_073d: pop IL_073e: endfinally - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_073f: ldloc.s V_70 IL_0741: dup IL_0742: stsfld float64 ''.$Linq101Aggregates01::averageLength@103 IL_0747: stloc.s averageLength - .line 111,117 : 1,21 + .line 111,117 : 1,21 '' IL_0749: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_074e: stloc.s V_76 IL_0750: ldloc.s V_76 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.netfx4.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.netfx4.bsl index e5a3e72b96f..f0b9d774b82 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.netfx4.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.netfx4.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17376 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:3:0:0 + .ver 4:4:1:0 } .assembly extern Utils { @@ -33,20 +33,20 @@ } .mresource public FSharpSignatureData.Linq101Select01 { - // Offset: 0x00000000 Length: 0x00000680 + // Offset: 0x00000000 Length: 0x0000065B } .mresource public FSharpOptimizationData.Linq101Select01 { - // Offset: 0x00000688 Length: 0x00000204 + // Offset: 0x00000660 Length: 0x00000204 } .module Linq101Select01.exe -// MVID: {4F31D86C-6057-8F80-A745-03836CD8314F} +// MVID: {58067926-6057-8F80-A745-038326790658} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x0000000000180000 +// Image base: 0x01120000 // =============== CLASS MEMBERS DECLARATION =================== @@ -61,6 +61,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -75,11 +77,11 @@ .maxstack 5 .locals init ([0] int32 n) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 12,12 : 9,28 + .line 12,12 : 9,28 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\QueryExpressionStepping\\Linq101Select01.fs' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 13,13 : 9,23 + .line 13,13 : 9,23 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -135,7 +137,7 @@ { // Code size 189 (0xbd) .maxstack 7 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Select01/numsPlusOne@13::pc IL_0006: ldc.i4.1 @@ -152,25 +154,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_0093 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00b4 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 13,13 : 9,23 + .line 13,13 : 9,23 '' IL_002e: ldarg.0 IL_002f: newobj instance void Linq101Select01/'numsPlusOne@12-1'::.ctor() IL_0034: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_numbers() @@ -182,7 +184,7 @@ IL_004d: ldarg.0 IL_004e: ldc.i4.1 IL_004f: stfld int32 Linq101Select01/numsPlusOne@13::pc - .line 13,13 : 9,23 + .line 13,13 : 9,23 '' IL_0054: ldarg.0 IL_0055: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/numsPlusOne@13::'enum' IL_005a: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -196,7 +198,7 @@ IL_0072: ldarg.0 IL_0073: ldc.i4.2 IL_0074: stfld int32 Linq101Select01/numsPlusOne@13::pc - .line 13,13 : 17,22 + .line 13,13 : 17,22 '' IL_0079: ldarg.0 IL_007a: ldarg.0 IL_007b: ldfld int32 Linq101Select01/numsPlusOne@13::n @@ -206,18 +208,18 @@ IL_0087: ldc.i4.1 IL_0088: ret - .line 13,13 : 9,23 + .line 13,13 : 9,23 '' IL_0089: ldarg.0 IL_008a: ldc.i4.0 IL_008b: stfld int32 Linq101Select01/numsPlusOne@13::n - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0090: nop IL_0091: br.s IL_0054 IL_0093: ldarg.0 IL_0094: ldc.i4.3 IL_0095: stfld int32 Linq101Select01/numsPlusOne@13::pc - .line 13,13 : 9,23 + .line 13,13 : 9,23 '' IL_009a: ldarg.0 IL_009b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/numsPlusOne@13::'enum' IL_00a0: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -243,7 +245,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -254,13 +256,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -281,30 +283,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -313,7 +315,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/numsPlusOne@13::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -330,18 +332,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 13,13 : 9,23 + .line 13,13 : 9,23 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -354,11 +356,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method numsPlusOne@13::Close @@ -448,6 +450,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -461,11 +465,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] class [Utils]Utils/Product p) - .line 21,21 : 9,29 + .line 21,21 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 22,22 : 9,31 + .line 22,22 : 9,31 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -521,7 +525,7 @@ { // Code size 192 (0xc0) .maxstack 7 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Select01/productNames@22::pc IL_0006: ldc.i4.1 @@ -538,25 +542,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_0096 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_008c - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00b7 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 22,22 : 9,31 + .line 22,22 : 9,31 '' IL_002e: ldarg.0 IL_002f: newobj instance void Linq101Select01/'productNames@21-1'::.ctor() IL_0034: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_products() @@ -568,7 +572,7 @@ IL_004d: ldarg.0 IL_004e: ldc.i4.1 IL_004f: stfld int32 Linq101Select01/productNames@22::pc - .line 22,22 : 9,31 + .line 22,22 : 9,31 '' IL_0054: ldarg.0 IL_0055: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/productNames@22::'enum' IL_005a: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -582,7 +586,7 @@ IL_0072: ldarg.0 IL_0073: ldc.i4.2 IL_0074: stfld int32 Linq101Select01/productNames@22::pc - .line 22,22 : 17,30 + .line 22,22 : 17,30 '' IL_0079: ldarg.0 IL_007a: ldarg.0 IL_007b: ldfld class [Utils]Utils/Product Linq101Select01/productNames@22::p @@ -591,18 +595,18 @@ IL_008a: ldc.i4.1 IL_008b: ret - .line 22,22 : 9,31 + .line 22,22 : 9,31 '' IL_008c: ldarg.0 IL_008d: ldnull IL_008e: stfld class [Utils]Utils/Product Linq101Select01/productNames@22::p - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: nop IL_0094: br.s IL_0054 IL_0096: ldarg.0 IL_0097: ldc.i4.3 IL_0098: stfld int32 Linq101Select01/productNames@22::pc - .line 22,22 : 9,31 + .line 22,22 : 9,31 '' IL_009d: ldarg.0 IL_009e: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/productNames@22::'enum' IL_00a3: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -628,7 +632,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -639,13 +643,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -666,30 +670,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -698,7 +702,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/productNames@22::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -715,18 +719,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 22,22 : 9,31 + .line 22,22 : 9,31 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -739,11 +743,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method productNames@22::Close @@ -833,6 +837,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -846,11 +852,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] int32 n) - .line 29,29 : 9,28 + .line 29,29 : 9,28 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 30,30 : 9,29 + .line 30,30 : 9,29 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -906,7 +912,7 @@ { // Code size 200 (0xc8) .maxstack 7 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Select01/textNums@30::pc IL_0006: ldc.i4.1 @@ -923,25 +929,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_0094 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00bf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 30,30 : 9,29 + .line 30,30 : 9,29 '' IL_0031: ldarg.0 IL_0032: newobj instance void Linq101Select01/'textNums@29-1'::.ctor() IL_0037: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_numbers() @@ -953,7 +959,7 @@ IL_0050: ldarg.0 IL_0051: ldc.i4.1 IL_0052: stfld int32 Linq101Select01/textNums@30::pc - .line 30,30 : 9,29 + .line 30,30 : 9,29 '' IL_0057: ldarg.0 IL_0058: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/textNums@30::'enum' IL_005d: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -967,7 +973,7 @@ IL_0075: ldarg.0 IL_0076: ldc.i4.2 IL_0077: stfld int32 Linq101Select01/textNums@30::pc - .line 30,30 : 17,28 + .line 30,30 : 17,28 '' IL_007c: ldarg.0 IL_007d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_strings() IL_0082: ldarg.0 @@ -977,18 +983,18 @@ IL_0092: ldc.i4.1 IL_0093: ret - .line 30,30 : 9,29 + .line 30,30 : 9,29 '' IL_0094: ldarg.0 IL_0095: ldc.i4.0 IL_0096: stfld int32 Linq101Select01/textNums@30::n - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009b: nop IL_009c: br.s IL_0057 IL_009e: ldarg.0 IL_009f: ldc.i4.3 IL_00a0: stfld int32 Linq101Select01/textNums@30::pc - .line 30,30 : 9,29 + .line 30,30 : 9,29 '' IL_00a5: ldarg.0 IL_00a6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/textNums@30::'enum' IL_00ab: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -1014,7 +1020,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -1025,13 +1031,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -1052,30 +1058,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -1084,7 +1090,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/textNums@30::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -1101,18 +1107,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 30,30 : 9,29 + .line 30,30 : 9,29 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -1125,11 +1131,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method textNums@30::Close @@ -1219,6 +1225,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1232,11 +1240,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] string w) - .line 38,38 : 8,25 + .line 38,38 : 8,25 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 39,39 : 8,41 + .line 39,39 : 8,41 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -1292,7 +1300,7 @@ { // Code size 211 (0xd3) .maxstack 7 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Select01/upperLowerWords@39::pc IL_0006: ldc.i4.1 @@ -1309,25 +1317,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_00a9 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_009f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00ca - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 39,39 : 8,41 + .line 39,39 : 8,41 '' IL_0031: ldarg.0 IL_0032: newobj instance void Linq101Select01/'upperLowerWords@38-1'::.ctor() IL_0037: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_words() @@ -1339,7 +1347,7 @@ IL_0050: ldarg.0 IL_0051: ldc.i4.1 IL_0052: stfld int32 Linq101Select01/upperLowerWords@39::pc - .line 39,39 : 8,41 + .line 39,39 : 8,41 '' IL_0057: ldarg.0 IL_0058: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/upperLowerWords@39::'enum' IL_005d: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -1353,7 +1361,7 @@ IL_0075: ldarg.0 IL_0076: ldc.i4.2 IL_0077: stfld int32 Linq101Select01/upperLowerWords@39::pc - .line 39,39 : 16,40 + .line 39,39 : 16,40 '' IL_007c: ldarg.0 IL_007d: ldarg.0 IL_007e: ldfld string Linq101Select01/upperLowerWords@39::w @@ -1367,18 +1375,18 @@ IL_009d: ldc.i4.1 IL_009e: ret - .line 39,39 : 8,41 + .line 39,39 : 8,41 '' IL_009f: ldarg.0 IL_00a0: ldnull IL_00a1: stfld string Linq101Select01/upperLowerWords@39::w - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00a6: nop IL_00a7: br.s IL_0057 IL_00a9: ldarg.0 IL_00aa: ldc.i4.3 IL_00ab: stfld int32 Linq101Select01/upperLowerWords@39::pc - .line 39,39 : 8,41 + .line 39,39 : 8,41 '' IL_00b0: ldarg.0 IL_00b1: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/upperLowerWords@39::'enum' IL_00b6: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -1404,7 +1412,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -1415,13 +1423,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -1442,30 +1450,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -1474,7 +1482,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/upperLowerWords@39::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -1491,18 +1499,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 39,39 : 8,41 + .line 39,39 : 8,41 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -1515,11 +1523,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method upperLowerWords@39::Close @@ -1609,6 +1617,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1622,11 +1632,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] int32 n) - .line 45,45 : 9,28 + .line 45,45 : 9,28 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 46,46 : 9,42 + .line 46,46 : 9,42 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -1682,7 +1692,7 @@ { // Code size 216 (0xd8) .maxstack 8 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Select01/digitOddEvens@46::pc IL_0006: ldc.i4.1 @@ -1699,25 +1709,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_00ae - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_00a4 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00cf - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 46,46 : 9,42 + .line 46,46 : 9,42 '' IL_0031: ldarg.0 IL_0032: newobj instance void Linq101Select01/'digitOddEvens@45-1'::.ctor() IL_0037: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_numbers() @@ -1729,7 +1739,7 @@ IL_0050: ldarg.0 IL_0051: ldc.i4.1 IL_0052: stfld int32 Linq101Select01/digitOddEvens@46::pc - .line 46,46 : 9,42 + .line 46,46 : 9,42 '' IL_0057: ldarg.0 IL_0058: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/digitOddEvens@46::'enum' IL_005d: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -1743,7 +1753,7 @@ IL_0075: ldarg.0 IL_0076: ldc.i4.2 IL_0077: stfld int32 Linq101Select01/digitOddEvens@46::pc - .line 46,46 : 17,41 + .line 46,46 : 17,41 '' IL_007c: ldarg.0 IL_007d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_strings() IL_0082: ldarg.0 @@ -1761,18 +1771,18 @@ IL_00a2: ldc.i4.1 IL_00a3: ret - .line 46,46 : 9,42 + .line 46,46 : 9,42 '' IL_00a4: ldarg.0 IL_00a5: ldc.i4.0 IL_00a6: stfld int32 Linq101Select01/digitOddEvens@46::n - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00ab: nop IL_00ac: br.s IL_0057 IL_00ae: ldarg.0 IL_00af: ldc.i4.3 IL_00b0: stfld int32 Linq101Select01/digitOddEvens@46::pc - .line 46,46 : 9,42 + .line 46,46 : 9,42 '' IL_00b5: ldarg.0 IL_00b6: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/digitOddEvens@46::'enum' IL_00bb: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -1798,7 +1808,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -1809,13 +1819,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -1836,30 +1846,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -1868,7 +1878,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/digitOddEvens@46::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -1885,18 +1895,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 46,46 : 9,42 + .line 46,46 : 9,42 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -1909,11 +1919,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method digitOddEvens@46::Close @@ -2003,6 +2013,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2016,11 +2028,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] class [Utils]Utils/Product p) - .line 52,52 : 9,29 + .line 52,52 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 53,53 : 9,56 + .line 53,53 : 9,56 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -2076,7 +2088,7 @@ { // Code size 225 (0xe1) .maxstack 8 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101Select01/productInfos@53::pc IL_0006: ldc.i4.1 @@ -2093,25 +2105,25 @@ IL_001f: br.s IL_002d - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_00b7 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00ad - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop IL_002e: br IL_00d8 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0033: nop - .line 53,53 : 9,56 + .line 53,53 : 9,56 '' IL_0034: ldarg.0 IL_0035: newobj instance void Linq101Select01/'productInfos@52-1'::.ctor() IL_003a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_products() @@ -2123,7 +2135,7 @@ IL_0053: ldarg.0 IL_0054: ldc.i4.1 IL_0055: stfld int32 Linq101Select01/productInfos@53::pc - .line 53,53 : 9,56 + .line 53,53 : 9,56 '' IL_005a: ldarg.0 IL_005b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/productInfos@53::'enum' IL_0060: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -2137,7 +2149,7 @@ IL_0078: ldarg.0 IL_0079: ldc.i4.2 IL_007a: stfld int32 Linq101Select01/productInfos@53::pc - .line 53,53 : 17,55 + .line 53,53 : 17,55 '' IL_007f: ldarg.0 IL_0080: ldarg.0 IL_0081: ldfld class [Utils]Utils/Product Linq101Select01/productInfos@53::p @@ -2155,18 +2167,18 @@ IL_00ab: ldc.i4.1 IL_00ac: ret - .line 53,53 : 9,56 + .line 53,53 : 9,56 '' IL_00ad: ldarg.0 IL_00ae: ldnull IL_00af: stfld class [Utils]Utils/Product Linq101Select01/productInfos@53::p - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_00b4: nop IL_00b5: br.s IL_005a IL_00b7: ldarg.0 IL_00b8: ldc.i4.3 IL_00b9: stfld int32 Linq101Select01/productInfos@53::pc - .line 53,53 : 9,56 + .line 53,53 : 9,56 '' IL_00be: ldarg.0 IL_00bf: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/productInfos@53::'enum' IL_00c4: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -2192,7 +2204,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -2203,13 +2215,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -2230,30 +2242,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -2262,7 +2274,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101Select01/productInfos@53::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -2279,18 +2291,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 53,53 : 9,56 + .line 53,53 : 9,56 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -2303,11 +2315,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method productInfos@53::Close @@ -2398,6 +2410,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -2414,11 +2428,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] int32 n) - .line 60,60 : 9,28 + .line 60,60 : 9,28 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 61,61 : 9,22 + .line 61,61 : 9,22 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/lowNums@60::builder@ IL_0009: ldloc.0 @@ -2435,6 +2449,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2447,7 +2463,7 @@ { // Code size 6 (0x6) .maxstack 8 - .line 61,61 : 16,21 + .line 61,61 : 16,21 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: ldc.i4.5 @@ -2463,6 +2479,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2475,7 +2493,7 @@ { // Code size 15 (0xf) .maxstack 8 - .line 62,62 : 16,26 + .line 62,62 : 16,26 '' IL_0000: nop IL_0001: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_digits() IL_0006: ldarg.1 @@ -2495,6 +2513,8 @@ instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@, int32 a) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 21 (0x15) .maxstack 8 IL_0000: ldarg.0 @@ -2514,11 +2534,11 @@ // Code size 29 (0x1d) .maxstack 7 .locals init ([0] int32 b) - .line 73,73 : 9,29 + .line 73,73 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 74,74 : 9,22 + .line 74,74 : 9,22 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'pairs@73-1'::builder@ IL_0009: ldarg.0 @@ -2540,6 +2560,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -2556,11 +2578,11 @@ // Code size 50 (0x32) .maxstack 8 .locals init ([0] int32 a) - .line 72,72 : 9,29 + .line 72,72 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 73,73 : 9,29 + .line 73,73 : 9,29 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/pairs@72::builder@ IL_0009: ldarg.0 @@ -2587,6 +2609,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2601,7 +2625,7 @@ .maxstack 6 .locals init ([0] int32 a, [1] int32 b) - .line 74,74 : 16,21 + .line 74,74 : 16,21 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -2623,6 +2647,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2637,7 +2663,7 @@ .maxstack 6 .locals init ([0] int32 a, [1] int32 b) - .line 75,75 : 17,20 + .line 75,75 : 17,20 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -2654,7 +2680,7 @@ } // end of class 'pairs@75-3' - .class auto ansi serializable nested assembly beforefieldinit 'orders@83-1' + .class auto ansi serializable nested assembly beforefieldinit 'orders@83-3' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,object>> { .field public class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@ @@ -2663,18 +2689,20 @@ instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@, class [Utils]Utils/Customer c) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 21 (0x15) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,object>>::.ctor() IL_0006: ldarg.0 IL_0007: ldarg.1 - IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-1'::builder@ + IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-3'::builder@ IL_000d: ldarg.0 IL_000e: ldarg.2 - IL_000f: stfld class [Utils]Utils/Customer Linq101Select01/'orders@83-1'::c + IL_000f: stfld class [Utils]Utils/Customer Linq101Select01/'orders@83-3'::c IL_0014: ret - } // end of method 'orders@83-1'::.ctor + } // end of method 'orders@83-3'::.ctor .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed @@ -2682,41 +2710,43 @@ // Code size 29 (0x1d) .maxstack 7 .locals init ([0] class [Utils]Utils/Order o) - .line 83,83 : 9,29 + .line 83,83 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 84,84 : 9,34 + .line 84,84 : 9,34 '' IL_0003: ldarg.0 - IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-1'::builder@ + IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@83-3'::builder@ IL_0009: ldarg.0 - IL_000a: ldfld class [Utils]Utils/Customer Linq101Select01/'orders@83-1'::c + IL_000a: ldfld class [Utils]Utils/Customer Linq101Select01/'orders@83-3'::c IL_000f: ldloc.0 IL_0010: newobj instance void class [mscorlib]System.Tuple`2::.ctor(!0, !1) IL_0015: tail. IL_0017: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Yield,object>(!!0) IL_001c: ret - } // end of method 'orders@83-1'::Invoke + } // end of method 'orders@83-3'::Invoke - } // end of class 'orders@83-1' + } // end of class 'orders@83-3' - .class auto ansi serializable nested assembly beforefieldinit orders@82 + .class auto ansi serializable nested assembly beforefieldinit 'orders@82-2' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Collections.IEnumerable>> { .field public class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Collections.IEnumerable>>::.ctor() IL_0006: ldarg.0 IL_0007: ldarg.1 - IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ + IL_0008: stfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ IL_000d: ret - } // end of method orders@82::.ctor + } // end of method 'orders@82-2'::.ctor .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed @@ -2724,44 +2754,46 @@ // Code size 51 (0x33) .maxstack 8 .locals init ([0] class [Utils]Utils/Customer c) - .line 82,82 : 9,30 + .line 82,82 : 9,30 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 83,83 : 9,29 + .line 83,83 : 9,29 '' IL_0003: ldarg.0 - IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ + IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ IL_0009: ldarg.0 - IL_000a: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ + IL_000a: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ IL_000f: ldloc.0 IL_0010: callvirt instance class [Utils]Utils/Order[] [Utils]Utils/Customer::get_Orders() IL_0015: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 IL_001a: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_001f: ldarg.0 - IL_0020: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders@82::builder@ + IL_0020: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders@82-2'::builder@ IL_0025: ldloc.0 - IL_0026: newobj instance void Linq101Select01/'orders@83-1'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder, + IL_0026: newobj instance void Linq101Select01/'orders@83-3'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder, class [Utils]Utils/Customer) IL_002b: tail. IL_002d: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,object>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) IL_0032: ret - } // end of method orders@82::Invoke + } // end of method 'orders@82-2'::Invoke - } // end of class orders@82 + } // end of class 'orders@82-2' - .class auto ansi serializable nested assembly beforefieldinit 'orders@84-2' + .class auto ansi serializable nested assembly beforefieldinit 'orders@84-4' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool>::.ctor() IL_0006: ret - } // end of method 'orders@84-2'::.ctor + } // end of method 'orders@84-4'::.ctor .method public strict virtual instance bool Invoke(class [mscorlib]System.Tuple`2 tupledArg) cil managed @@ -2770,7 +2802,7 @@ .maxstack 10 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 84,84 : 16,33 + .line 84,84 : 16,33 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -2793,22 +2825,24 @@ IL_0023: call bool [mscorlib]System.Decimal::op_LessThan(valuetype [mscorlib]System.Decimal, valuetype [mscorlib]System.Decimal) IL_0028: ret - } // end of method 'orders@84-2'::Invoke + } // end of method 'orders@84-4'::Invoke - } // end of class 'orders@84-2' + } // end of class 'orders@84-4' - .class auto ansi serializable nested assembly beforefieldinit 'orders@85-3' + .class auto ansi serializable nested assembly beforefieldinit 'orders@85-5' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Tuple`3> { .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [mscorlib]System.Tuple`3>::.ctor() IL_0006: ret - } // end of method 'orders@85-3'::.ctor + } // end of method 'orders@85-5'::.ctor .method public strict virtual instance class [mscorlib]System.Tuple`3 Invoke(class [mscorlib]System.Tuple`2 tupledArg) cil managed @@ -2817,7 +2851,7 @@ .maxstack 7 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 85,85 : 17,49 + .line 85,85 : 17,49 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -2835,9 +2869,9 @@ !1, !2) IL_0026: ret - } // end of method 'orders@85-3'::Invoke + } // end of method 'orders@85-5'::Invoke - } // end of class 'orders@85-3' + } // end of class 'orders@85-5' .class auto ansi serializable nested assembly beforefieldinit 'orders2@92-1' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,object>> @@ -2848,6 +2882,8 @@ instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@, class [Utils]Utils/Customer c) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 21 (0x15) .maxstack 8 IL_0000: ldarg.0 @@ -2867,11 +2903,11 @@ // Code size 29 (0x1d) .maxstack 7 .locals init ([0] class [Utils]Utils/Order o) - .line 92,92 : 9,29 + .line 92,92 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 93,93 : 9,51 + .line 93,93 : 9,51 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders2@92-1'::builder@ IL_0009: ldarg.0 @@ -2893,6 +2929,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -2909,11 +2947,11 @@ // Code size 51 (0x33) .maxstack 8 .locals init ([0] class [Utils]Utils/Customer c) - .line 91,91 : 9,30 + .line 91,91 : 9,30 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 92,92 : 9,29 + .line 92,92 : 9,29 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders2@91::builder@ IL_0009: ldarg.0 @@ -2941,6 +2979,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2955,7 +2995,7 @@ .maxstack 8 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 93,93 : 16,50 + .line 93,93 : 16,50 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -2985,6 +3025,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -2999,7 +3041,7 @@ .maxstack 7 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 94,94 : 17,53 + .line 94,94 : 17,53 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -3030,6 +3072,8 @@ instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@, class [Utils]Utils/Customer c) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 21 (0x15) .maxstack 8 IL_0000: ldarg.0 @@ -3049,11 +3093,11 @@ // Code size 29 (0x1d) .maxstack 7 .locals init ([0] class [Utils]Utils/Order o) - .line 101,101 : 9,29 + .line 101,101 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 102,102 : 9,35 + .line 102,102 : 9,35 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders3@101-1'::builder@ IL_0009: ldarg.0 @@ -3075,6 +3119,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -3091,11 +3137,11 @@ // Code size 51 (0x33) .maxstack 8 .locals init ([0] class [Utils]Utils/Customer c) - .line 100,100 : 9,30 + .line 100,100 : 9,30 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 101,101 : 9,29 + .line 101,101 : 9,29 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders3@100::builder@ IL_0009: ldarg.0 @@ -3123,6 +3169,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3137,7 +3185,7 @@ .maxstack 10 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 102,102 : 16,34 + .line 102,102 : 16,34 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -3170,6 +3218,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3184,7 +3234,7 @@ .maxstack 7 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 103,103 : 17,49 + .line 103,103 : 17,49 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -3213,6 +3263,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -3229,11 +3281,11 @@ // Code size 18 (0x12) .maxstack 6 .locals init ([0] class [Utils]Utils/Customer c) - .line 111,111 : 9,30 + .line 111,111 : 9,30 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 112,112 : 9,32 + .line 112,112 : 9,32 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/orders4@111::builder@ IL_0009: ldloc.0 @@ -3250,6 +3302,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3262,7 +3316,7 @@ { // Code size 18 (0x12) .maxstack 8 - .line 112,112 : 16,31 + .line 112,112 : 16,31 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: callvirt instance string [Utils]Utils/Customer::get_Region() @@ -3283,6 +3337,8 @@ instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@, class [Utils]Utils/Customer c) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 21 (0x15) .maxstack 8 IL_0000: ldarg.0 @@ -3302,11 +3358,11 @@ // Code size 29 (0x1d) .maxstack 7 .locals init ([0] class [Utils]Utils/Order o) - .line 113,113 : 9,29 + .line 113,113 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 114,114 : 9,42 + .line 114,114 : 9,42 '' IL_0003: ldarg.0 IL_0004: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Select01/'orders4@113-3'::builder@ IL_0009: ldarg.0 @@ -3328,6 +3384,8 @@ .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 14 (0xe) .maxstack 8 IL_0000: ldarg.0 @@ -3344,7 +3402,7 @@ // Code size 51 (0x33) .maxstack 8 .locals init ([0] class [Utils]Utils/Customer c) - .line 111,111 : 13,14 + .line 111,111 : 13,14 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 @@ -3375,6 +3433,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3389,7 +3449,7 @@ .maxstack 6 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 114,114 : 16,41 + .line 114,114 : 16,41 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -3414,6 +3474,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -3428,7 +3490,7 @@ .maxstack 6 .locals init ([0] class [Utils]Utils/Customer c, [1] class [Utils]Utils/Order o) - .line 115,115 : 17,40 + .line 115,115 : 17,40 '' IL_0000: ldarg.1 IL_0001: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() IL_0006: stloc.0 @@ -3452,7 +3514,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbers@7 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'numbers@7-9' IL_0005: ret } // end of method Linq101Select01::get_numbers @@ -3470,7 +3532,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::products@17 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'products@17-12' IL_0005: ret } // end of method Linq101Select01::get_products @@ -3488,7 +3550,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::strings@26 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'strings@26-2' IL_0005: ret } // end of method Linq101Select01::get_strings @@ -3506,7 +3568,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::words@34 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'words@34-8' IL_0005: ret } // end of method Linq101Select01::get_words @@ -3542,7 +3604,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::digits@57 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'digits@57-4' IL_0005: ret } // end of method Linq101Select01::get_digits @@ -3587,7 +3649,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::customers@79 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'customers@79-4' IL_0005: ret } // end of method Linq101Select01::get_customers @@ -3767,19 +3829,19 @@ .class private abstract auto ansi sealed ''.$Linq101Select01 extends [mscorlib]System.Object { - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 numbers@7 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'numbers@7-9' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 numsPlusOne@10 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 products@17 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'products@17-12' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Collections.Generic.IEnumerable`1 productNames@19 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 strings@26 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'strings@26-2' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 textNums@27 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 words@34 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'words@34-8' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`2[] upperLowerWords@36 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -3787,7 +3849,7 @@ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`3[] productInfos@50 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 digits@57 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'digits@57-4' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 lowNums@58 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -3797,7 +3859,7 @@ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`2[] pairs@70 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 customers@79 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'customers@79-4' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Tuple`3[] orders@80 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -3853,7 +3915,7 @@ [32] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_32, [33] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_33, [34] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_34) - .line 7,7 : 1,47 + .line 7,7 : 1,47 '' IL_0000: nop IL_0001: ldc.i4.5 IL_0002: ldc.i4.4 @@ -3887,9 +3949,9 @@ IL_003e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) IL_0043: dup - IL_0044: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbers@7 + IL_0044: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'numbers@7-9' IL_0049: stloc.0 - .line 10,14 : 1,20 + .line 10,14 : 1,20 '' IL_004a: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_004f: stloc.s builder@ IL_0051: ldc.i4.0 @@ -3904,10 +3966,10 @@ IL_005f: dup IL_0060: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numsPlusOne@10 IL_0065: stloc.1 - .line 17,17 : 1,32 + .line 17,17 : 1,32 '' IL_0066: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getProductList() IL_006b: dup - IL_006c: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::products@17 + IL_006c: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'products@17-12' IL_0071: stloc.2 IL_0072: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0077: stloc.s V_22 @@ -3922,7 +3984,7 @@ IL_0082: dup IL_0083: stsfld class [mscorlib]System.Collections.Generic.IEnumerable`1 ''.$Linq101Select01::productNames@19 IL_0088: stloc.3 - .line 26,26 : 1,97 + .line 26,26 : 1,97 '' IL_0089: ldstr "zero" IL_008e: ldstr "one" IL_0093: ldstr "two" @@ -3955,9 +4017,9 @@ IL_00ed: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) IL_00f2: dup - IL_00f3: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::strings@26 + IL_00f3: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'strings@26-2' IL_00f8: stloc.s strings - .line 27,31 : 1,20 + .line 27,31 : 1,20 '' IL_00fa: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_00ff: stloc.s V_23 IL_0101: ldc.i4.0 @@ -3972,7 +4034,7 @@ IL_010f: dup IL_0110: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::textNums@27 IL_0115: stloc.s textNums - .line 34,34 : 1,46 + .line 34,34 : 1,46 '' IL_0117: ldstr "aPPLE" IL_011c: ldstr "BlUeBeRrY" IL_0121: ldstr "cHeRry" @@ -3984,9 +4046,9 @@ IL_0135: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) IL_013a: dup - IL_013b: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::words@34 + IL_013b: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'words@34-8' IL_0140: stloc.s words - .line 36,40 : 1,20 + .line 36,40 : 1,20 '' IL_0142: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0147: stloc.s V_24 IL_0149: ldnull @@ -4001,7 +4063,7 @@ IL_0157: dup IL_0158: stsfld class [mscorlib]System.Tuple`2[] ''.$Linq101Select01::upperLowerWords@36 IL_015d: stloc.s upperLowerWords - .line 43,47 : 1,20 + .line 43,47 : 1,20 '' IL_015f: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0164: stloc.s V_25 IL_0166: ldc.i4.0 @@ -4016,7 +4078,7 @@ IL_0174: dup IL_0175: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> ''.$Linq101Select01::digitOddEvens@43 IL_017a: stloc.s digitOddEvens - .line 50,54 : 1,21 + .line 50,54 : 1,21 '' IL_017c: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0181: stloc.s V_26 IL_0183: ldnull @@ -4031,12 +4093,12 @@ IL_0191: dup IL_0192: stsfld class [mscorlib]System.Tuple`3[] ''.$Linq101Select01::productInfos@50 IL_0197: stloc.s productInfos - .line 57,57 : 1,21 + .line 57,57 : 1,21 '' IL_0199: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_strings() IL_019e: dup - IL_019f: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::digits@57 + IL_019f: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'digits@57-4' IL_01a4: stloc.s digits - .line 58,63 : 1,20 + .line 58,63 : 1,20 '' IL_01a6: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_01ab: stloc.s V_27 IL_01ad: ldloc.s V_27 @@ -4061,7 +4123,7 @@ IL_01ee: dup IL_01ef: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::lowNums@58 IL_01f4: stloc.s lowNums - .line 64,64 : 1,59 + .line 64,64 : 1,59 '' IL_01f6: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_lowNums() IL_01fb: stloc.s V_28 IL_01fd: ldstr "four" @@ -4094,23 +4156,23 @@ IL_024b: br.s IL_0267 - .line 64,64 : 60,84 + .line 64,64 : 60,84 '' IL_024d: ldstr "lowNums failed" IL_0252: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) IL_0257: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) IL_025c: pop - .line 64,64 : 86,92 + .line 64,64 : 86,92 '' IL_025d: ldc.i4.1 IL_025e: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) IL_0263: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0264: nop IL_0265: br.s IL_0268 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0267: nop - .line 67,67 : 1,37 + .line 67,67 : 1,37 '' IL_0268: ldc.i4.0 IL_0269: ldc.i4.2 IL_026a: ldc.i4.4 @@ -4136,7 +4198,7 @@ IL_0298: dup IL_0299: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbersA@67 IL_029e: stloc.s numbersA - .line 68,68 : 1,31 + .line 68,68 : 1,31 '' IL_02a0: ldc.i4.1 IL_02a1: ldc.i4.3 IL_02a2: ldc.i4.5 @@ -4156,7 +4218,7 @@ IL_02c3: dup IL_02c4: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbersB@68 IL_02c9: stloc.s numbersB - .line 70,76 : 1,21 + .line 70,76 : 1,21 '' IL_02cb: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_02d0: stloc.s V_30 IL_02d2: ldloc.s V_30 @@ -4181,12 +4243,12 @@ IL_0313: dup IL_0314: stsfld class [mscorlib]System.Tuple`2[] ''.$Linq101Select01::pairs@70 IL_0319: stloc.s pairs - .line 79,79 : 1,34 + .line 79,79 : 1,34 '' IL_031b: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getCustomerList() IL_0320: dup - IL_0321: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::customers@79 + IL_0321: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::'customers@79-4' IL_0326: stloc.s customers - .line 80,86 : 1,21 + .line 80,86 : 1,21 '' IL_0328: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_032d: stloc.s V_31 IL_032f: ldloc.s V_31 @@ -4197,13 +4259,13 @@ IL_033c: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 IL_0341: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_0346: ldloc.s V_31 - IL_0348: newobj instance void Linq101Select01/orders@82::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_0348: newobj instance void Linq101Select01/'orders@82-2'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) IL_034d: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_0352: newobj instance void Linq101Select01/'orders@84-2'::.ctor() + IL_0352: newobj instance void Linq101Select01/'orders@84-4'::.ctor() IL_0357: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_035c: newobj instance void Linq101Select01/'orders@85-3'::.ctor() + IL_035c: newobj instance void Linq101Select01/'orders@85-5'::.ctor() IL_0361: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) IL_0366: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() @@ -4211,7 +4273,7 @@ IL_0370: dup IL_0371: stsfld class [mscorlib]System.Tuple`3[] ''.$Linq101Select01::orders@80 IL_0376: stloc.s orders - .line 89,95 : 1,21 + .line 89,95 : 1,21 '' IL_0378: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_037d: stloc.s V_32 IL_037f: ldloc.s V_32 @@ -4259,7 +4321,7 @@ IL_040b: dup IL_040c: stsfld class [mscorlib]System.Collections.Generic.IEnumerable`1> ''.$Linq101Select01::orders3@98 IL_0411: stloc.s orders3 - .line 107,107 : 1,38 + .line 107,107 : 1,38 '' IL_0413: ldc.i4 0x7cd IL_0418: ldc.i4.1 IL_0419: ldc.i4.1 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.netfx4.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.netfx4.bsl index c23b4335bcd..6737087bf4b 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.netfx4.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.netfx4.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17376 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:3:0:0 + .ver 4:4:1:0 } .assembly extern Utils { @@ -33,20 +33,20 @@ } .mresource public FSharpSignatureData.Linq101SetOperators01 { - // Offset: 0x00000000 Length: 0x000003B5 + // Offset: 0x00000000 Length: 0x00000390 } .mresource public FSharpOptimizationData.Linq101SetOperators01 { - // Offset: 0x000003C0 Length: 0x0000011E + // Offset: 0x00000398 Length: 0x0000011E } .module Linq101SetOperators01.exe -// MVID: {4F31D86F-4EE5-349F-A745-03836FD8314F} +// MVID: {58067926-4EE5-349F-A745-038326790658} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x0000000000440000 +// Image base: 0x00640000 // =============== CLASS MEMBERS DECLARATION =================== @@ -55,7 +55,7 @@ extends [mscorlib]System.Object { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname uniqueFactors@13 + .class auto autochar serializable sealed nested assembly beforefieldinit specialname 'uniqueFactors@13-1' extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) @@ -87,23 +87,23 @@ .maxstack 8 IL_0000: ldarg.0 IL_0001: ldarg.1 - IL_0002: stfld int32 Linq101SetOperators01/uniqueFactors@13::_arg1 + IL_0002: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::_arg1 IL_0007: ldarg.0 IL_0008: ldarg.2 - IL_0009: stfld int32 Linq101SetOperators01/uniqueFactors@13::n + IL_0009: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::n IL_000e: ldarg.0 IL_000f: ldarg.3 - IL_0010: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/uniqueFactors@13::'enum' + IL_0010: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/'uniqueFactors@13-1'::'enum' IL_0015: ldarg.0 IL_0016: ldarg.s pc - IL_0018: stfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_0018: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_001d: ldarg.0 IL_001e: ldarg.s current - IL_0020: stfld int32 Linq101SetOperators01/uniqueFactors@13::current + IL_0020: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::current IL_0025: ldarg.0 IL_0026: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() IL_002b: ret - } // end of method uniqueFactors@13::.ctor + } // end of method 'uniqueFactors@13-1'::.ctor .method public strict virtual instance int32 GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed @@ -111,9 +111,9 @@ // Code size 196 (0xc4) .maxstack 6 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\QueryExpressionStepping\\Linq101SetOperators01.fs' IL_0000: ldarg.0 - IL_0001: ldfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_0001: ldfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_0006: ldc.i4.1 IL_0007: sub IL_0008: switch ( @@ -128,91 +128,91 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_009a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00bb - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 13,13 : 9,33 + .line 13,13 : 9,33 '' IL_002e: ldarg.0 IL_002f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101SetOperators01::get_factorsOf300() IL_0034: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 IL_0039: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1 class [mscorlib]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_003e: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/uniqueFactors@13::'enum' + IL_003e: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/'uniqueFactors@13-1'::'enum' IL_0043: ldarg.0 IL_0044: ldc.i4.1 - IL_0045: stfld int32 Linq101SetOperators01/uniqueFactors@13::pc - .line 13,13 : 9,33 + IL_0045: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc + .line 13,13 : 9,33 '' IL_004a: ldarg.0 - IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/uniqueFactors@13::'enum' + IL_004b: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/'uniqueFactors@13-1'::'enum' IL_0050: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() IL_0055: brfalse.s IL_009a IL_0057: ldarg.0 IL_0058: ldarg.0 - IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/uniqueFactors@13::'enum' + IL_0059: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/'uniqueFactors@13-1'::'enum' IL_005e: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0063: stfld int32 Linq101SetOperators01/uniqueFactors@13::_arg1 - .line 13,13 : 9,33 + IL_0063: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::_arg1 + .line 13,13 : 9,33 '' IL_0068: ldarg.0 IL_0069: ldarg.0 - IL_006a: ldfld int32 Linq101SetOperators01/uniqueFactors@13::_arg1 - IL_006f: stfld int32 Linq101SetOperators01/uniqueFactors@13::n + IL_006a: ldfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::_arg1 + IL_006f: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::n IL_0074: ldarg.0 IL_0075: ldc.i4.2 - IL_0076: stfld int32 Linq101SetOperators01/uniqueFactors@13::pc - .line 14,14 : 9,17 + IL_0076: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc + .line 14,14 : 9,17 '' IL_007b: ldarg.0 IL_007c: ldarg.0 - IL_007d: ldfld int32 Linq101SetOperators01/uniqueFactors@13::n - IL_0082: stfld int32 Linq101SetOperators01/uniqueFactors@13::current + IL_007d: ldfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::n + IL_0082: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::current IL_0087: ldc.i4.1 IL_0088: ret IL_0089: ldarg.0 IL_008a: ldc.i4.0 - IL_008b: stfld int32 Linq101SetOperators01/uniqueFactors@13::n - .line 13,13 : 9,33 + IL_008b: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::n + .line 13,13 : 9,33 '' IL_0090: ldarg.0 IL_0091: ldc.i4.0 - IL_0092: stfld int32 Linq101SetOperators01/uniqueFactors@13::_arg1 - .line 100001,100001 : 0,0 + IL_0092: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::_arg1 + .line 100001,100001 : 0,0 '' IL_0097: nop IL_0098: br.s IL_004a IL_009a: ldarg.0 IL_009b: ldc.i4.3 - IL_009c: stfld int32 Linq101SetOperators01/uniqueFactors@13::pc - .line 13,13 : 9,33 + IL_009c: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc + .line 13,13 : 9,33 '' IL_00a1: ldarg.0 - IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/uniqueFactors@13::'enum' + IL_00a2: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/'uniqueFactors@13-1'::'enum' IL_00a7: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_00ac: nop IL_00ad: ldarg.0 IL_00ae: ldnull - IL_00af: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/uniqueFactors@13::'enum' + IL_00af: stfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/'uniqueFactors@13-1'::'enum' IL_00b4: ldarg.0 IL_00b5: ldc.i4.3 - IL_00b6: stfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_00b6: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_00bb: ldarg.0 IL_00bc: ldc.i4.0 - IL_00bd: stfld int32 Linq101SetOperators01/uniqueFactors@13::current + IL_00bd: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::current IL_00c2: ldc.i4.0 IL_00c3: ret - } // end of method uniqueFactors@13::GenerateNext + } // end of method 'uniqueFactors@13-1'::GenerateNext .method public strict virtual instance void Close() cil managed @@ -222,29 +222,29 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 - IL_0003: ldfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_0003: ldfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_0008: ldc.i4.3 IL_0009: sub IL_000a: switch ( IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { IL_001c: ldarg.0 - IL_001d: ldfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_001d: ldfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_0022: switch ( IL_0039, IL_003b, @@ -260,46 +260,46 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 - IL_0051: stfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_0051: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_0056: ldarg.0 - IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/uniqueFactors@13::'enum' + IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/'uniqueFactors@13-1'::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 - IL_0065: stfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_0065: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_006a: ldarg.0 IL_006b: ldc.i4.0 - IL_006c: stfld int32 Linq101SetOperators01/uniqueFactors@13::current + IL_006c: stfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::current IL_0071: ldnull IL_0072: stloc.1 IL_0073: leave.s IL_0081 @@ -309,18 +309,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 13,13 : 9,33 + .line 13,13 : 9,33 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -333,13 +333,13 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret - } // end of method uniqueFactors@13::Close + } // end of method 'uniqueFactors@13-1'::Close .method public strict virtual instance bool get_CheckClose() cil managed @@ -348,7 +348,7 @@ .maxstack 8 IL_0000: nop IL_0001: ldarg.0 - IL_0002: ldfld int32 Linq101SetOperators01/uniqueFactors@13::pc + IL_0002: ldfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::pc IL_0007: switch ( IL_001e, IL_0020, @@ -385,7 +385,7 @@ IL_0037: ldc.i4.0 IL_0038: ret - } // end of method uniqueFactors@13::get_CheckClose + } // end of method 'uniqueFactors@13-1'::get_CheckClose .method public strict virtual instance int32 get_LastGenerated() cil managed @@ -396,9 +396,9 @@ .maxstack 8 IL_0000: nop IL_0001: ldarg.0 - IL_0002: ldfld int32 Linq101SetOperators01/uniqueFactors@13::current + IL_0002: ldfld int32 Linq101SetOperators01/'uniqueFactors@13-1'::current IL_0007: ret - } // end of method uniqueFactors@13::get_LastGenerated + } // end of method 'uniqueFactors@13-1'::get_LastGenerated .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed @@ -413,15 +413,15 @@ IL_0003: ldnull IL_0004: ldc.i4.0 IL_0005: ldc.i4.0 - IL_0006: newobj instance void Linq101SetOperators01/uniqueFactors@13::.ctor(int32, - int32, - class [mscorlib]System.Collections.Generic.IEnumerator`1, - int32, - int32) + IL_0006: newobj instance void Linq101SetOperators01/'uniqueFactors@13-1'::.ctor(int32, + int32, + class [mscorlib]System.Collections.Generic.IEnumerator`1, + int32, + int32) IL_000b: ret - } // end of method uniqueFactors@13::GetFreshEnumerator + } // end of method 'uniqueFactors@13-1'::GetFreshEnumerator - } // end of class uniqueFactors@13 + } // end of class 'uniqueFactors@13-1' .class auto ansi serializable nested assembly beforefieldinit 'categoryNames@22-1' extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> @@ -429,6 +429,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -442,11 +444,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] class [Utils]Utils/Product p) - .line 22,22 : 9,29 + .line 22,22 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 23,23 : 9,26 + .line 23,23 : 9,26 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -502,7 +504,7 @@ { // Code size 192 (0xc0) .maxstack 7 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101SetOperators01/categoryNames@23::pc IL_0006: ldc.i4.1 @@ -519,25 +521,25 @@ IL_001f: br.s IL_0027 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br.s IL_0096 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0024: nop IL_0025: br.s IL_008c - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br IL_00b7 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002d: nop - .line 23,23 : 9,26 + .line 23,23 : 9,26 '' IL_002e: ldarg.0 IL_002f: newobj instance void Linq101SetOperators01/'categoryNames@22-1'::.ctor() IL_0034: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101SetOperators01::get_products() @@ -549,7 +551,7 @@ IL_004d: ldarg.0 IL_004e: ldc.i4.1 IL_004f: stfld int32 Linq101SetOperators01/categoryNames@23::pc - .line 23,23 : 9,26 + .line 23,23 : 9,26 '' IL_0054: ldarg.0 IL_0055: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/categoryNames@23::'enum' IL_005a: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -563,7 +565,7 @@ IL_0072: ldarg.0 IL_0073: ldc.i4.2 IL_0074: stfld int32 Linq101SetOperators01/categoryNames@23::pc - .line 23,23 : 16,26 + .line 23,23 : 16,26 '' IL_0079: ldarg.0 IL_007a: ldarg.0 IL_007b: ldfld class [Utils]Utils/Product Linq101SetOperators01/categoryNames@23::p @@ -572,18 +574,18 @@ IL_008a: ldc.i4.1 IL_008b: ret - .line 23,23 : 9,26 + .line 23,23 : 9,26 '' IL_008c: ldarg.0 IL_008d: ldnull IL_008e: stfld class [Utils]Utils/Product Linq101SetOperators01/categoryNames@23::p - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: nop IL_0094: br.s IL_0054 IL_0096: ldarg.0 IL_0097: ldc.i4.3 IL_0098: stfld int32 Linq101SetOperators01/categoryNames@23::pc - .line 23,23 : 9,26 + .line 23,23 : 9,26 '' IL_009d: ldarg.0 IL_009e: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/categoryNames@23::'enum' IL_00a3: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -609,7 +611,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -620,13 +622,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -647,30 +649,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -679,7 +681,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/categoryNames@23::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -696,18 +698,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 23,23 : 9,26 + .line 23,23 : 9,26 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -720,11 +722,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method categoryNames@23::Close @@ -814,6 +816,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -827,11 +831,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] class [Utils]Utils/Product p) - .line 32,32 : 9,29 + .line 32,32 : 9,29 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 33,33 : 9,33 + .line 33,33 : 9,33 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -887,7 +891,7 @@ { // Code size 201 (0xc9) .maxstack 7 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101SetOperators01/productFirstChars@33::pc IL_0006: ldc.i4.1 @@ -904,25 +908,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_0095 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00c0 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 33,33 : 9,33 + .line 33,33 : 9,33 '' IL_0031: ldarg.0 IL_0032: newobj instance void Linq101SetOperators01/'productFirstChars@32-1'::.ctor() IL_0037: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101SetOperators01::get_products() @@ -934,7 +938,7 @@ IL_0050: ldarg.0 IL_0051: ldc.i4.1 IL_0052: stfld int32 Linq101SetOperators01/productFirstChars@33::pc - .line 33,33 : 9,33 + .line 33,33 : 9,33 '' IL_0057: ldarg.0 IL_0058: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/productFirstChars@33::'enum' IL_005d: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -948,7 +952,7 @@ IL_0075: ldarg.0 IL_0076: ldc.i4.2 IL_0077: stfld int32 Linq101SetOperators01/productFirstChars@33::pc - .line 33,33 : 29,30 + .line 33,33 : 29,30 '' IL_007c: ldarg.0 IL_007d: ldarg.0 IL_007e: ldfld class [Utils]Utils/Product Linq101SetOperators01/productFirstChars@33::p @@ -959,18 +963,18 @@ IL_0093: ldc.i4.1 IL_0094: ret - .line 33,33 : 9,33 + .line 33,33 : 9,33 '' IL_0095: ldarg.0 IL_0096: ldnull IL_0097: stfld class [Utils]Utils/Product Linq101SetOperators01/productFirstChars@33::p - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009c: nop IL_009d: br.s IL_0057 IL_009f: ldarg.0 IL_00a0: ldc.i4.3 IL_00a1: stfld int32 Linq101SetOperators01/productFirstChars@33::pc - .line 33,33 : 9,33 + .line 33,33 : 9,33 '' IL_00a6: ldarg.0 IL_00a7: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/productFirstChars@33::'enum' IL_00ac: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -996,7 +1000,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -1007,13 +1011,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -1034,30 +1038,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -1066,7 +1070,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/productFirstChars@33::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -1083,18 +1087,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 33,33 : 9,33 + .line 33,33 : 9,33 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -1107,11 +1111,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method productFirstChars@33::Close @@ -1201,6 +1205,8 @@ .method assembly specialname rtspecialname instance void .ctor() cil managed { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 @@ -1214,11 +1220,11 @@ // Code size 12 (0xc) .maxstack 5 .locals init ([0] class [Utils]Utils/Customer c) - .line 38,38 : 9,30 + .line 38,38 : 9,30 '' IL_0000: nop IL_0001: ldarg.1 IL_0002: stloc.0 - .line 39,39 : 9,33 + .line 39,39 : 9,33 '' IL_0003: ldloc.0 IL_0004: tail. IL_0006: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Singleton(!!0) @@ -1274,7 +1280,7 @@ { // Code size 201 (0xc9) .maxstack 7 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldarg.0 IL_0001: ldfld int32 Linq101SetOperators01/customerFirstChars@39::pc IL_0006: ldc.i4.1 @@ -1291,25 +1297,25 @@ IL_001f: br.s IL_002a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0021: nop IL_0022: br IL_009f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0027: nop IL_0028: br.s IL_0095 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_002a: nop IL_002b: br IL_00c0 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0030: nop - .line 39,39 : 9,33 + .line 39,39 : 9,33 '' IL_0031: ldarg.0 IL_0032: newobj instance void Linq101SetOperators01/'customerFirstChars@38-1'::.ctor() IL_0037: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101SetOperators01::get_customers() @@ -1321,7 +1327,7 @@ IL_0050: ldarg.0 IL_0051: ldc.i4.1 IL_0052: stfld int32 Linq101SetOperators01/customerFirstChars@39::pc - .line 39,39 : 9,33 + .line 39,39 : 9,33 '' IL_0057: ldarg.0 IL_0058: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/customerFirstChars@39::'enum' IL_005d: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() @@ -1335,7 +1341,7 @@ IL_0075: ldarg.0 IL_0076: ldc.i4.2 IL_0077: stfld int32 Linq101SetOperators01/customerFirstChars@39::pc - .line 39,39 : 29,30 + .line 39,39 : 29,30 '' IL_007c: ldarg.0 IL_007d: ldarg.0 IL_007e: ldfld class [Utils]Utils/Customer Linq101SetOperators01/customerFirstChars@39::c @@ -1346,18 +1352,18 @@ IL_0093: ldc.i4.1 IL_0094: ret - .line 39,39 : 9,33 + .line 39,39 : 9,33 '' IL_0095: ldarg.0 IL_0096: ldnull IL_0097: stfld class [Utils]Utils/Customer Linq101SetOperators01/customerFirstChars@39::c - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_009c: nop IL_009d: br.s IL_0057 IL_009f: ldarg.0 IL_00a0: ldc.i4.3 IL_00a1: stfld int32 Linq101SetOperators01/customerFirstChars@39::pc - .line 39,39 : 9,33 + .line 39,39 : 9,33 '' IL_00a6: ldarg.0 IL_00a7: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/customerFirstChars@39::'enum' IL_00ac: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) @@ -1383,7 +1389,7 @@ .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.Unit V_1, [2] class [mscorlib]System.Exception e) - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0000: ldnull IL_0001: stloc.0 IL_0002: ldarg.0 @@ -1394,13 +1400,13 @@ IL_0015) IL_0013: br.s IL_001b - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0015: nop IL_0016: br IL_0089 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_001b: nop .try { @@ -1421,30 +1427,30 @@ IL_003f: br.s IL_004a - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0041: nop IL_0042: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0044: nop IL_0045: br.s IL_004f - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_0047: nop IL_0048: br.s IL_004e - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004a: nop IL_004b: br.s IL_0063 - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' + .line 100001,100001 : 0,0 '' IL_004d: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_004e: nop IL_004f: ldarg.0 IL_0050: ldc.i4.3 @@ -1453,7 +1459,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/customerFirstChars@39::'enum' IL_005c: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::Dispose>(!!0) IL_0061: nop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0062: nop IL_0063: ldarg.0 IL_0064: ldc.i4.3 @@ -1470,18 +1476,18 @@ { IL_0075: castclass [mscorlib]System.Exception IL_007a: stloc.2 - .line 39,39 : 9,33 + .line 39,39 : 9,33 '' IL_007b: ldloc.2 IL_007c: stloc.0 IL_007d: ldnull IL_007e: stloc.1 IL_007f: leave.s IL_0081 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' } // end handler IL_0081: ldloc.1 IL_0082: pop - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0083: nop IL_0084: br IL_0002 @@ -1494,11 +1500,11 @@ IL_0091: br.s IL_0095 - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0093: ldloc.0 IL_0094: throw - .line 100001,100001 : 0,0 + .line 100001,100001 : 0,0 '' IL_0095: ret } // end of method customerFirstChars@39::Close @@ -1587,7 +1593,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::factorsOf300@9 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'factorsOf300@9-2' IL_0005: ret } // end of method Linq101SetOperators01::get_factorsOf300 @@ -1596,7 +1602,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::uniqueFactors@11 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'uniqueFactors@11-2' IL_0005: ret } // end of method Linq101SetOperators01::get_uniqueFactors @@ -1605,7 +1611,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::products@18 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'products@18-14' IL_0005: ret } // end of method Linq101SetOperators01::get_products @@ -1623,7 +1629,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::customers@28 + IL_0000: ldsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'customers@28-6' IL_0005: ret } // end of method Linq101SetOperators01::get_customers @@ -1692,15 +1698,15 @@ .class private abstract auto ansi sealed ''.$Linq101SetOperators01 extends [mscorlib]System.Object { - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 factorsOf300@9 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'factorsOf300@9-2' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 uniqueFactors@11 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'uniqueFactors@11-2' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 products@18 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'products@18-14' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 categoryNames@20 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 customers@28 + .field static assembly class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'customers@28-6' .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly class [mscorlib]System.Collections.Generic.IEnumerable`1 productFirstChars@30 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -1726,7 +1732,7 @@ [8] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_8, [9] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_9, [10] class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder V_10) - .line 9,9 : 1,31 + .line 9,9 : 1,31 '' IL_0000: nop IL_0001: ldc.i4.2 IL_0002: ldc.i4.2 @@ -1745,9 +1751,9 @@ IL_001f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) IL_0024: dup - IL_0025: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::factorsOf300@9 + IL_0025: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'factorsOf300@9-2' IL_002a: stloc.0 - .line 11,15 : 1,20 + .line 11,15 : 1,20 '' IL_002b: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_0030: stloc.s builder@ IL_0032: ldloc.s builder@ @@ -1756,24 +1762,24 @@ IL_0036: ldnull IL_0037: ldc.i4.0 IL_0038: ldc.i4.0 - IL_0039: newobj instance void Linq101SetOperators01/uniqueFactors@13::.ctor(int32, - int32, - class [mscorlib]System.Collections.Generic.IEnumerator`1, - int32, - int32) + IL_0039: newobj instance void Linq101SetOperators01/'uniqueFactors@13-1'::.ctor(int32, + int32, + class [mscorlib]System.Collections.Generic.IEnumerator`1, + int32, + int32) IL_003e: newobj instance void class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2::.ctor(class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_0043: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Distinct(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2) IL_0048: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2::get_Source() IL_004d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_0052: dup - IL_0053: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::uniqueFactors@11 + IL_0053: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'uniqueFactors@11-2' IL_0058: stloc.1 - .line 18,18 : 1,32 + .line 18,18 : 1,32 '' IL_0059: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getProductList() IL_005e: dup - IL_005f: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::products@18 + IL_005f: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'products@18-14' IL_0064: stloc.2 - .line 20,25 : 1,20 + .line 20,25 : 1,20 '' IL_0065: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_006a: stloc.s V_8 IL_006c: ldloc.s V_8 @@ -1792,10 +1798,10 @@ IL_008b: dup IL_008c: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::categoryNames@20 IL_0091: stloc.3 - .line 28,28 : 1,34 + .line 28,28 : 1,34 '' IL_0092: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getCustomerList() IL_0097: dup - IL_0098: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::customers@28 + IL_0098: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101SetOperators01::'customers@28-6' IL_009d: stloc.s customers IL_009f: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() IL_00a4: stloc.s V_9 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/env.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/env.lst index 5df032d5bb7..0dd1c4b8206 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/env.lst +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/env.lst @@ -1,13 +1,13 @@ NoMT SOURCE=Utils.fs SCFLAGS="-a -r:System.Xml.Linq" # Utils.fs -Expensive,NoMT SOURCE=Linq101Aggregates01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Aggregates01.exe NetFx40" # Linq101Aggregates01.fs - CodeGen +Retry,NoMT SOURCE=Linq101Aggregates01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Aggregates01.exe NetFx40" # Linq101Aggregates01.fs - CodeGen NoMT SOURCE=Linq101ElementOperators01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101ElementOperators01.exe NetFx40" # Linq101ElementOperators01.fs - CodeGen NoMT SOURCE=Linq101Grouping01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Grouping01.exe NetFx40" # Linq101Grouping01.fs - CodeGen NoMT SOURCE=Linq101Joins01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Joins01.exe NetFx40" # Linq101Joins01.fs - CodeGen NoMT SOURCE=Linq101Ordering01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Ordering01.exe NetFx40" # Linq101Ordering01.fs - CodeGen NoMT SOURCE=Linq101Partitioning01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Partitioning01.exe NetFx40" # Linq101Partitioning01.fs - CodeGen NoMT SOURCE=Linq101Quantifiers01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Quantifiers01.exe NetFx40" # Linq101Quantifiers01.fs - CodeGen -Expensive,NoMT SOURCE=Linq101Select01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Select01.exe NetFx40" # Linq101Select01.fs - CodeGen -Expensive,NoMT SOURCE=Linq101SetOperators01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101SetOperators01.exe NetFx40" # Linq101SetOperators01.fs - CodeGen +Retry,NoMT SOURCE=Linq101Select01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Select01.exe NetFx40" # Linq101Select01.fs - CodeGen +Retry,NoMT SOURCE=Linq101SetOperators01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101SetOperators01.exe NetFx40" # Linq101SetOperators01.fs - CodeGen NoMT SOURCE=Linq101Where01.fs SCFLAGS="-r:Utils.dll -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Linq101Where01.exe NetFx40" # Linq101Where01.fs - CodeGen diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest1.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest1.il.bsl deleted file mode 100644 index 92b2ae266c9..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest1.il.bsl +++ /dev/null @@ -1,262 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly SeqExpressionSteppingTest1 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.SeqExpressionSteppingTest1 -{ - // Offset: 0x00000000 Length: 0x00000249 -} -.mresource public FSharpOptimizationData.SeqExpressionSteppingTest1 -{ - // Offset: 0x00000250 Length: 0x000000AD -} -.module SeqExpressionSteppingTest1.dll -// MVID: {4D94A755-241E-090F-A745-038355A7944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x002E0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed SeqExpressionSteppingTest1 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public SeqExpressionSteppingTest1 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f0@5 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(int32 pc, - int32 current) cil managed - { - // Code size 21 (0x15) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::pc - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::current - IL_000e: ldarg.0 - IL_000f: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() - IL_0014: ret - } // end of method f0@5::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed - { - // Code size 66 (0x42) - .maxstack 6 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_0017, - IL_0019) - IL_0015: br.s IL_0021 - - IL_0017: br.s IL_001b - - IL_0019: br.s IL_001e - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001b: nop - IL_001c: br.s IL_0032 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001e: nop - IL_001f: br.s IL_0039 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0021: nop - IL_0022: ldarg.0 - IL_0023: ldc.i4.1 - IL_0024: stfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::pc - .line 5,5 : 15,22 - IL_0029: ldarg.0 - IL_002a: ldc.i4.1 - IL_002b: stfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::current - IL_0030: ldc.i4.1 - IL_0031: ret - - IL_0032: ldarg.0 - IL_0033: ldc.i4.2 - IL_0034: stfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::pc - IL_0039: ldarg.0 - IL_003a: ldc.i4.0 - IL_003b: stfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::current - IL_0040: ldc.i4.0 - IL_0041: ret - } // end of method f0@5::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.2 - IL_0003: stfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::pc - IL_0008: ret - } // end of method f0@5::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 46 (0x2e) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::pc - IL_0007: switch ( - IL_001a, - IL_001c, - IL_001e) - IL_0018: br.s IL_0029 - - IL_001a: br.s IL_0020 - - IL_001c: br.s IL_0023 - - IL_001e: br.s IL_0026 - - IL_0020: nop - IL_0021: br.s IL_002c - - IL_0023: nop - IL_0024: br.s IL_002a - - IL_0026: nop - IL_0027: br.s IL_002c - - IL_0029: nop - IL_002a: ldc.i4.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method f0@5::get_CheckClose - - .method public strict virtual instance int32 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::current - IL_0007: ret - } // end of method f0@5::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::.ctor(int32, - int32) - IL_0008: ret - } // end of method f0@5::GetFreshEnumerator - - } // end of class f0@5 - - .method public static class [mscorlib]System.Collections.Generic.IEnumerable`1 - f0() cil managed - { - // Code size 9 (0x9) - .maxstack 4 - .line 5,5 : 9,24 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void SeqExpressionSteppingTest1/SeqExpressionSteppingTest1/f0@5::.ctor(int32, - int32) - IL_0008: ret - } // end of method SeqExpressionSteppingTest1::f0 - - } // end of class SeqExpressionSteppingTest1 - -} // end of class SeqExpressionSteppingTest1 - -.class private abstract auto ansi sealed ''.$SeqExpressionSteppingTest1 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 13 (0xd) - .maxstack 3 - .line 7,7 : 13,30 - IL_0000: nop - IL_0001: call class [mscorlib]System.Collections.Generic.IEnumerable`1 SeqExpressionSteppingTest1/SeqExpressionSteppingTest1::f0() - IL_0006: call int32 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Length(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_000b: pop - IL_000c: ret - } // end of method $SeqExpressionSteppingTest1::.cctor - -} // end of class ''.$SeqExpressionSteppingTest1 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest2.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest2.il.bsl deleted file mode 100644 index b9e3bf611d0..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest2.il.bsl +++ /dev/null @@ -1,299 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly SeqExpressionSteppingTest2 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.SeqExpressionSteppingTest2 -{ - // Offset: 0x00000000 Length: 0x00000249 -} -.mresource public FSharpOptimizationData.SeqExpressionSteppingTest2 -{ - // Offset: 0x00000250 Length: 0x000000AD -} -.module SeqExpressionSteppingTest2.dll -// MVID: {4D94A77B-241E-09B2-A745-03837BA7944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x002C0000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed SeqExpressionSteppingTest2 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public SeqExpressionSteppingTest2 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f1@4 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1 - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public int32 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(int32 pc, - int32 current) cil managed - { - // Code size 21 (0x15) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::pc - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::current - IL_000e: ldarg.0 - IL_000f: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1::.ctor() - IL_0014: ret - } // end of method f1@4::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1& next) cil managed - { - // Code size 123 (0x7b) - .maxstack 6 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_001b, - IL_001d, - IL_001f) - IL_0019: br.s IL_002a - - IL_001b: br.s IL_0021 - - IL_001d: br.s IL_0024 - - IL_001f: br.s IL_0027 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0021: nop - IL_0022: br.s IL_004b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0024: nop - IL_0025: br.s IL_006b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0027: nop - IL_0028: br.s IL_0072 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_002a: nop - .line 4,4 : 15,30 - IL_002b: ldstr "hello" - IL_0030: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0035: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_003a: pop - IL_003b: ldarg.0 - IL_003c: ldc.i4.1 - IL_003d: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::pc - .line 5,5 : 15,22 - IL_0042: ldarg.0 - IL_0043: ldc.i4.1 - IL_0044: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::current - IL_0049: ldc.i4.1 - IL_004a: ret - - .line 6,6 : 15,32 - IL_004b: ldstr "goodbye" - IL_0050: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0055: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_005a: pop - IL_005b: ldarg.0 - IL_005c: ldc.i4.2 - IL_005d: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::pc - .line 7,7 : 15,22 - IL_0062: ldarg.0 - IL_0063: ldc.i4.2 - IL_0064: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::current - IL_0069: ldc.i4.1 - IL_006a: ret - - IL_006b: ldarg.0 - IL_006c: ldc.i4.3 - IL_006d: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::pc - IL_0072: ldarg.0 - IL_0073: ldc.i4.0 - IL_0074: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::current - IL_0079: ldc.i4.0 - IL_007a: ret - } // end of method f1@4::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.3 - IL_0003: stfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::pc - IL_0008: ret - } // end of method f1@4::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 57 (0x39) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::pc - IL_0007: switch ( - IL_001e, - IL_0020, - IL_0022, - IL_0024) - IL_001c: br.s IL_0032 - - IL_001e: br.s IL_0026 - - IL_0020: br.s IL_0029 - - IL_0022: br.s IL_002c - - IL_0024: br.s IL_002f - - IL_0026: nop - IL_0027: br.s IL_0037 - - IL_0029: nop - IL_002a: br.s IL_0035 - - IL_002c: nop - IL_002d: br.s IL_0033 - - IL_002f: nop - IL_0030: br.s IL_0037 - - IL_0032: nop - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldc.i4.0 - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - } // end of method f1@4::get_CheckClose - - .method public strict virtual instance int32 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::current - IL_0007: ret - } // end of method f1@4::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::.ctor(int32, - int32) - IL_0008: ret - } // end of method f1@4::GetFreshEnumerator - - } // end of class f1@4 - - .method public static class [mscorlib]System.Collections.Generic.IEnumerable`1 - f1() cil managed - { - // Code size 9 (0x9) - .maxstack 4 - .line 4,7 : 9,24 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: ldc.i4.0 - IL_0003: newobj instance void SeqExpressionSteppingTest2/SeqExpressionSteppingTest2/f1@4::.ctor(int32, - int32) - IL_0008: ret - } // end of method SeqExpressionSteppingTest2::f1 - - } // end of class SeqExpressionSteppingTest2 - -} // end of class SeqExpressionSteppingTest2 - -.class private abstract auto ansi sealed ''.$SeqExpressionSteppingTest2 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 13 (0xd) - .maxstack 3 - .line 9,9 : 13,30 - IL_0000: nop - IL_0001: call class [mscorlib]System.Collections.Generic.IEnumerable`1 SeqExpressionSteppingTest2/SeqExpressionSteppingTest2::f1() - IL_0006: call int32 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Length(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_000b: pop - IL_000c: ret - } // end of method $SeqExpressionSteppingTest2::.cctor - -} // end of class ''.$SeqExpressionSteppingTest2 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest3.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest3.il.bsl deleted file mode 100644 index c9088b26df2..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest3.il.bsl +++ /dev/null @@ -1,299 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v2.0.50727 -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. - .ver 2:0:0:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 2:0:0:0 -} -.assembly SeqExpressionSteppingTest3 -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.SeqExpressionSteppingTest3 -{ - // Offset: 0x00000000 Length: 0x00000259 -} -.mresource public FSharpOptimizationData.SeqExpressionSteppingTest3 -{ - // Offset: 0x00000260 Length: 0x000000AD -} -.module SeqExpressionSteppingTest3.dll -// MVID: {4D94A7A4-241E-08D1-A745-0383A4A7944D} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x00490000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed SeqExpressionSteppingTest3 - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public SeqExpressionSteppingTest3 - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested assembly beforefieldinit specialname f2@5 - extends class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1> - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x - .field public int32 pc - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field public class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 current - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x, - int32 pc, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 current) cil managed - { - // Code size 28 (0x1c) - .maxstack 6 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::x - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld int32 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::pc - IL_000e: ldarg.0 - IL_000f: ldarg.3 - IL_0010: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::current - IL_0015: ldarg.0 - IL_0016: call instance void class [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1>::.ctor() - IL_001b: ret - } // end of method f2@5::.ctor - - .method public strict virtual instance int32 - GenerateNext(class [mscorlib]System.Collections.Generic.IEnumerable`1>& next) cil managed - { - // Code size 116 (0x74) - .maxstack 6 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 - IL_0000: ldarg.0 - IL_0001: ldfld int32 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::pc - IL_0006: ldc.i4.1 - IL_0007: sub - IL_0008: switch ( - IL_0017, - IL_0019) - IL_0015: br.s IL_0021 - - IL_0017: br.s IL_001b - - IL_0019: br.s IL_001e - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001b: nop - IL_001c: br.s IL_0061 - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_001e: nop - IL_001f: br.s IL_006b - - .line 100001,100001 : 0,0 - .line 100001,100001 : 0,0 - IL_0021: nop - .line 5,5 : 21,27 - IL_0022: ldarg.0 - IL_0023: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::x - IL_0028: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_002d: ldc.i4.4 - IL_002e: bge.s IL_0064 - - .line 6,6 : 18,24 - IL_0030: ldarg.0 - IL_0031: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::x - IL_0036: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_003b: nop - .line 7,7 : 18,33 - IL_003c: ldstr "hello" - IL_0041: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0046: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_004b: pop - IL_004c: ldarg.0 - IL_004d: ldc.i4.1 - IL_004e: stfld int32 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::pc - .line 8,8 : 18,25 - IL_0053: ldarg.0 - IL_0054: ldarg.0 - IL_0055: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::x - IL_005a: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::current - IL_005f: ldc.i4.1 - IL_0060: ret - - .line 100001,100001 : 0,0 - IL_0061: nop - IL_0062: br.s IL_0022 - - IL_0064: ldarg.0 - IL_0065: ldc.i4.2 - IL_0066: stfld int32 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::pc - IL_006b: ldarg.0 - IL_006c: ldnull - IL_006d: stfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::current - IL_0072: ldc.i4.0 - IL_0073: ret - } // end of method f2@5::GenerateNext - - .method public strict virtual instance void - Close() cil managed - { - // Code size 9 (0x9) - .maxstack 6 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldc.i4.2 - IL_0003: stfld int32 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::pc - IL_0008: ret - } // end of method f2@5::Close - - .method public strict virtual instance bool - get_CheckClose() cil managed - { - // Code size 46 (0x2e) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld int32 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::pc - IL_0007: switch ( - IL_001a, - IL_001c, - IL_001e) - IL_0018: br.s IL_0029 - - IL_001a: br.s IL_0020 - - IL_001c: br.s IL_0023 - - IL_001e: br.s IL_0026 - - IL_0020: nop - IL_0021: br.s IL_002c - - IL_0023: nop - IL_0024: br.s IL_002a - - IL_0026: nop - IL_0027: br.s IL_002c - - IL_0029: nop - IL_002a: ldc.i4.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method f2@5::get_CheckClose - - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 - get_LastGenerated() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 8 (0x8) - .maxstack 5 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::current - IL_0007: ret - } // end of method f2@5::get_LastGenerated - - .method public strict virtual instance class [mscorlib]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 15 (0xf) - .maxstack 7 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::x - IL_0007: ldc.i4.0 - IL_0008: ldnull - IL_0009: newobj instance void SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_000e: ret - } // end of method f2@5::GetFreshEnumerator - - } // end of class f2@5 - - .method public static class [mscorlib]System.Collections.Generic.IEnumerable`1> - f2() cil managed - { - // Code size 17 (0x11) - .maxstack 5 - .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x) - .line 4,4 : 9,22 - IL_0000: nop - IL_0001: ldc.i4.0 - IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0007: stloc.0 - .line 5,8 : 9,27 - IL_0008: ldloc.0 - IL_0009: ldc.i4.0 - IL_000a: ldnull - IL_000b: newobj instance void SeqExpressionSteppingTest3/SeqExpressionSteppingTest3/f2@5::.ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1, - int32, - class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0010: ret - } // end of method SeqExpressionSteppingTest3::f2 - - } // end of class SeqExpressionSteppingTest3 - -} // end of class SeqExpressionSteppingTest3 - -.class private abstract auto ansi sealed ''.$SeqExpressionSteppingTest3 - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 13 (0xd) - .maxstack 3 - .line 10,10 : 13,30 - IL_0000: nop - IL_0001: call class [mscorlib]System.Collections.Generic.IEnumerable`1> SeqExpressionSteppingTest3/SeqExpressionSteppingTest3::f2() - IL_0006: call int32 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::Length>(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_000b: pop - IL_000c: ret - } // end of method $SeqExpressionSteppingTest3::.cctor - -} // end of class ''.$SeqExpressionSteppingTest3 - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/env.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/env.lst index 41b18794b8d..bd2030f455c 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/env.lst +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/env.lst @@ -1,4 +1,4 @@ - SOURCE=SeqExpressionSteppingTest1.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SeqExpressionSteppingTest1.exe NetFx40" # SeqExpressionSteppingTest1.fs - NetFx40 +Retry SOURCE=SeqExpressionSteppingTest1.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SeqExpressionSteppingTest1.exe NetFx40" # SeqExpressionSteppingTest1.fs - NetFx40 SOURCE=SeqExpressionSteppingTest2.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SeqExpressionSteppingTest2.exe NetFx40" # SeqExpressionSteppingTest2.fs - NetFx40 SOURCE=SeqExpressionSteppingTest3.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SeqExpressionSteppingTest3.exe NetFx40" # SeqExpressionSteppingTest3.fs - NetFx40 SOURCE=SeqExpressionSteppingTest4.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SeqExpressionSteppingTest4.exe NetFx40" # SeqExpressionSteppingTest4.fs - NetFx40 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/keep.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/keep.lst new file mode 100644 index 00000000000..f59ec20aabf --- /dev/null +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/keep.lst @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl index 6c20c40a5cf..6e5b6813fe2 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.16774 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:0:0:0 + .ver 4:4:1:0 } .assembly SteppingMatch05 { @@ -29,20 +29,20 @@ } .mresource public FSharpSignatureData.SteppingMatch05 { - // Offset: 0x00000000 Length: 0x00000256 + // Offset: 0x00000000 Length: 0x00000232 } .mresource public FSharpOptimizationData.SteppingMatch05 { - // Offset: 0x00000260 Length: 0x0000007B + // Offset: 0x00000238 Length: 0x0000007B } .module SteppingMatch05.dll -// MVID: {4DAC14D5-30E9-4ADA-A745-0383D514AC4D} +// MVID: {58067926-30E9-4ADA-A745-038326790658} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x0000000000270000 +// Image base: 0x02670000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,59 +53,59 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static void funcC3(class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3 n) cil managed { - // Code size 84 (0x54) + // Code size 82 (0x52) .maxstack 3 .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3 V_0, - [1] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 V_1, - [2] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 V_2, - [3] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 V_3, - [4] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3 V_4) + [1] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3 V_1, + [2] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 V_2, + [3] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 V_3, + [4] class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 V_4) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 5,5 : 9,21 + .line 5,5 : 9,21 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch05.fs' IL_0000: nop IL_0001: ldarg.0 IL_0002: stloc.0 IL_0003: ldloc.0 - IL_0004: stloc.s V_4 - IL_0006: ldloc.s V_4 - IL_0008: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 - IL_000d: brtrue.s IL_001a - - IL_000f: ldloc.s V_4 - IL_0011: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 - IL_0016: brtrue.s IL_001c - - IL_0018: br.s IL_001e - - IL_001a: br.s IL_0030 - - IL_001c: br.s IL_0042 - - IL_001e: ldloc.0 - IL_001f: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 - IL_0024: stloc.1 - .line 7,7 : 13,35 - IL_0025: ldstr "C" - IL_002a: call void [mscorlib]System.Console::WriteLine(string) - IL_002f: ret - - .line 5,5 : 9,21 - IL_0030: ldloc.0 - IL_0031: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 - IL_0036: stloc.2 - .line 9,9 : 13,35 - IL_0037: ldstr "B" - IL_003c: call void [mscorlib]System.Console::WriteLine(string) - IL_0041: ret - - .line 5,5 : 9,21 - IL_0042: ldloc.0 - IL_0043: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 - IL_0048: stloc.3 - .line 11,11 : 13,35 - IL_0049: ldstr "A" - IL_004e: call void [mscorlib]System.Console::WriteLine(string) - IL_0053: ret + IL_0004: stloc.1 + IL_0005: ldloc.1 + IL_0006: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 + IL_000b: brtrue.s IL_0017 + + IL_000d: ldloc.1 + IL_000e: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 + IL_0013: brtrue.s IL_0019 + + IL_0015: br.s IL_001b + + IL_0017: br.s IL_002d + + IL_0019: br.s IL_003f + + IL_001b: ldloc.0 + IL_001c: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 + IL_0021: stloc.2 + .line 7,7 : 13,35 '' + IL_0022: ldstr "C" + IL_0027: call void [mscorlib]System.Console::WriteLine(string) + IL_002c: ret + + .line 5,5 : 9,21 '' + IL_002d: ldloc.0 + IL_002e: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 + IL_0033: stloc.3 + .line 9,9 : 13,35 '' + IL_0034: ldstr "B" + IL_0039: call void [mscorlib]System.Console::WriteLine(string) + IL_003e: ret + + .line 5,5 : 9,21 '' + IL_003f: ldloc.0 + IL_0040: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 + IL_0045: stloc.s V_4 + .line 11,11 : 13,35 '' + IL_0047: ldstr "A" + IL_004c: call void [mscorlib]System.Console::WriteLine(string) + IL_0051: ret } // end of method SteppingMatch05::funcC3 } // end of class SteppingMatch05 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/env.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/env.lst index 29e5289ec6e..4b89d7e1c39 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/env.lst +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/env.lst @@ -3,7 +3,7 @@ SOURCE=SteppingMatch02.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SteppingMatch02.dll" # SteppingMatch02.fs SOURCE=SteppingMatch03.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SteppingMatch03.dll" # SteppingMatch03.fs SOURCE=SteppingMatch04.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SteppingMatch04.dll" # SteppingMatch04.fs -Expensive SOURCE=SteppingMatch05.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SteppingMatch05.dll" # SteppingMatch05.fs +Retry SOURCE=SteppingMatch05.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SteppingMatch05.dll" # SteppingMatch05.fs SOURCE=SteppingMatch06.fs SCFLAGS="-a -g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd SteppingMatch06.dll NetFx40" # SteppingMatch06.fs - NetFx40 diff --git a/tests/fsharpqa/Source/FSharpQA.Tests.fsproj b/tests/fsharpqa/Source/FSharpQA.Tests.fsproj index 49451a93459..691ac57ccaa 100644 --- a/tests/fsharpqa/Source/FSharpQA.Tests.fsproj +++ b/tests/fsharpqa/Source/FSharpQA.Tests.fsproj @@ -72,9 +72,6 @@ config.fs - - update.fs - diff --git a/tests/fsharpqa/Source/nunitConf.fs b/tests/fsharpqa/Source/nunitConf.fs index 9a18413d6c1..cbe4c442eb0 100644 --- a/tests/fsharpqa/Source/nunitConf.fs +++ b/tests/fsharpqa/Source/nunitConf.fs @@ -4,7 +4,6 @@ open System open System.IO open NUnit.Framework -open UpdateCmd open TestConfig open PlatformHelpers open FSharpTestSuiteTypes diff --git a/tests/fsharpqa/Source/test.lst b/tests/fsharpqa/Source/test.lst index 0c33bdb3dc9..d31a07a32f9 100644 --- a/tests/fsharpqa/Source/test.lst +++ b/tests/fsharpqa/Source/test.lst @@ -18,12 +18,12 @@ CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\MethodImplAttribute CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\Misc CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\Mutation CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\Operators -CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\QueryExpressionStepping -CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\SeqExpressionStepping +Retry,CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\QueryExpressionStepping +Retry,CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\SeqExpressionStepping CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\SeqExpressionTailCalls CodeGen01,NoMT,CodeGen,NoHostedCompiler,SerializableAttribute CodeGen\EmittedIL\SerializableAttribute CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\StaticInit -CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\SteppingMatch +Retry,CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\SteppingMatch CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\TailCalls CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\TestFunctions CodeGen01,NoMT,CodeGen CodeGen\EmittedIL\Tuples diff --git a/tests/fsharpqa/testenv/src/FSharp.Compiler.Hosted/FSharp.Compiler.Hosted.fsproj b/tests/fsharpqa/testenv/src/FSharp.Compiler.Hosted/FSharp.Compiler.Hosted.fsproj index 91ab641308e..477499331da 100644 --- a/tests/fsharpqa/testenv/src/FSharp.Compiler.Hosted/FSharp.Compiler.Hosted.fsproj +++ b/tests/fsharpqa/testenv/src/FSharp.Compiler.Hosted/FSharp.Compiler.Hosted.fsproj @@ -70,6 +70,6 @@ - + \ No newline at end of file diff --git a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj index b7a65e32800..4230d157c51 100644 --- a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj +++ b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj @@ -41,7 +41,10 @@ - + + {4fae092e-5366-43f5-85fa-71eaf66fa4a8} + FSharp.Core + diff --git a/tests/fsharpqa/testenv/src/ILComparer/ILComparer.fsproj b/tests/fsharpqa/testenv/src/ILComparer/ILComparer.fsproj index 129c4c5aeac..5dfe0bc9b41 100644 --- a/tests/fsharpqa/testenv/src/ILComparer/ILComparer.fsproj +++ b/tests/fsharpqa/testenv/src/ILComparer/ILComparer.fsproj @@ -8,7 +8,7 @@ Debug AnyCPU 2.0 - 4239efea-e746-446a-bf7a-51fcbab13946 + {2e60864a-e3ff-4bcc-810f-dc7c34e6b236} Exe ILComparer ILComparer @@ -45,7 +45,7 @@ - + {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core diff --git a/tests/fsharpqa/testenv/src/diff/diff.fsproj b/tests/fsharpqa/testenv/src/diff/diff.fsproj index 035dbbed0ea..97a17aee007 100644 --- a/tests/fsharpqa/testenv/src/diff/diff.fsproj +++ b/tests/fsharpqa/testenv/src/diff/diff.fsproj @@ -8,7 +8,7 @@ Debug AnyCPU 2.0 - 4239efea-e746-446a-bf7a-51fcbab13946 + {bf5c6d92-d053-4216-9c42-b62f5f5c5e91} Exe FSharp.Test.Diff diff @@ -45,7 +45,7 @@ - + {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core diff --git a/tests/windowsPlatform.fs b/tests/windowsPlatform.fs index 0ffe35dba7d..71d7f8e614f 100644 --- a/tests/windowsPlatform.fs +++ b/tests/windowsPlatform.fs @@ -2,6 +2,10 @@ module WindowsPlatform open PlatformHelpers +open Microsoft.Win32 +open System.Text.RegularExpressions +open FSharpTestSuiteTypes + // REM == Find out path to native 'Program Files 32bit', no matter what // REM == architecture we are running on and no matter what command @@ -21,7 +25,7 @@ let private parseProcessorArchitecture (s : string) = | "X86" -> X86 | "IA64" -> IA64 | "AMD64" -> AMD64 - | arc -> Unknown s + | _ -> Unknown s /// /// Return current process architecture, using PROCESSOR_ARCHITECTURE environment variable @@ -31,11 +35,9 @@ let processorArchitecture envVars = | Some x -> x | None -> failwithf "environment variable '%s' required " "PROCESSOR_ARCHITECTURE" -/// /// Return real processor architecture (ignore WOW64) /// more info: http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx /// use PROCESSOR_ARCHITEW6432 and PROCESSOR_ARCHITECTURE environment variables -/// let osArch envVars = // SET OSARCH=%PROCESSOR_ARCHITECTURE% // IF NOT "%PROCESSOR_ARCHITEW6432%"=="" SET OSARCH=%PROCESSOR_ARCHITEW6432% @@ -52,8 +54,6 @@ let osArch envVars = // %~xi - expands %i to a file extension only // %~si - expanded path contains short names only -open Microsoft.Win32 - let regQuery path value (baseKey: RegistryKey) = use regKey = baseKey.OpenSubKey(path, false) @@ -63,51 +63,3 @@ let regQuery path value (baseKey: RegistryKey) = | null -> None | x -> Some x -open System.Text.RegularExpressions -open FSharpTestSuiteTypes - -let visualStudioVersion () = - - let hklm32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32) - let subkey = - match hklm32.OpenSubKey(@"Software\Microsoft\VisualStudio\15.0\Setup") with - | null -> - match hklm32.OpenSubKey(@"Software\Microsoft\VisualStudio\14.0\Setup") with - | null -> None - | t -> Some t - | t -> Some t - - let keys = - match subkey with - | None -> [| |] - | Some t -> t.GetSubKeyNames() - - let findstr r = keys |> Array.exists (fun t -> Regex.IsMatch(t, r)) - - // reg query "%REG_SOFTWARE%\Microsoft\VisualStudio\15.0\Setup" | findstr /r /c:"Express .* for Windows Desktop" > NUL - // if NOT ERRORLEVEL 1 ( - // set INSTALL_SKU=DESKTOP_EXPRESS - // goto :done_SKU - // ) - if findstr "Express .* for Windows Desktop" then - Some INSTALL_SKU.DesktopExpress - - // reg query "%REG_SOFTWARE%\Microsoft\VisualStudio\15.0\Setup" | findstr /r /c:"Express .* for Web" > NUL - // if NOT ERRORLEVEL 1 ( - // set INSTALL_SKU=WEB_EXPRESS - // goto :done_SKU - // ) - elif findstr "Express .* for Web" then - Some INSTALL_SKU.WebExpress - - // reg query "%REG_SOFTWARE%\Microsoft\VisualStudio\15.0\Setup" | findstr /r /c:"Ultimate" > NUL - // if NOT ERRORLEVEL 1 ( - // set INSTALL_SKU=ULTIMATE - // goto :done_SKU - // ) - elif findstr "Ultimate" then - Some INSTALL_SKU.Ultimate - - // set INSTALL_SKU=CLEAN - // :done_SKU - else Some INSTALL_SKU.Clean