Port desktop tests that had references
authorRichard L Ford <richford@microsoft.com>
Tue, 16 Feb 2016 23:13:32 +0000 (15:13 -0800)
committerRichard L Ford <richford@microsoft.com>
Thu, 18 Feb 2016 04:09:37 +0000 (20:09 -0800)
This change ports desktop tests that had references to dlls.
It also fixes some of the dll project files.
In addition there are some additional tests that were not
previously ported (but that do not reference dlls).

There are 4 tests that are excluded because of issue dotnet/coreclr#3216.

Commit migrated from https://github.com/dotnet/coreclr/commit/30c68b9d32ee6a6b82fa8315087a6dcbbe85a4b2

175 files changed:
src/coreclr/tests/issues.targets
src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Generics/Fields/getclassfrommethodparam.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Generics/Fields/getclassfrommethodparam.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_dbgsin_cs_il.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_odbgsin_cs_il.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_orelsin_cs_il.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_relsin_cs_il.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/sinlib_il_d.ilproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/sinlib_il_r.ilproj [moved from src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/sinlib.ilproj with 100% similarity]
src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/acceptance/ca/csattr.cs [deleted file]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_ro.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/EHCopyProp.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/EHCopyProp.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/localloc/call/app.config [moved from src/coreclr/tests/src/JIT/Methodical/acceptance/ca/app.config with 100% similarity]
src/coreclr/tests/src/JIT/Methodical/localloc/call/call01.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/localloc/call/call01_small.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest1-xassem.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest2-xassem.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest4-xassem.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/app.config [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/b07483.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/b07483.sc [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/app.config [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/b43313.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/b43313.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/app.config [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/b55197.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/b55197.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b210352/csharptester.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b210352/csharptester.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/app.config [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/b102447.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/prep.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/CSharpPart.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/Core.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/StandardSupport.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/jmpwrappers.il
src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_145295/BadUnwind2.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_145295/CSharpPart.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/app.config [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/b601838.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/b601838.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nd1A_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nd1A_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nf1A_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nf1A_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sd1A_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sd1A_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sf1A_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sf1A_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nd1C_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nd1C_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nf1C_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nf1C_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sd1C_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sd1C_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sf1C_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sf1C_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nd1E_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nd1E_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nf1E_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nf1E_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sd1E_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sd1E_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sf1E_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sf1E_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nd1G_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nd1G_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nf1G_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nf1G_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sd1G_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sd1G_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sf1G_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sf1G_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_dynamic.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_large.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_small.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_dynamic.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_large.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_small.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_dynamic.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_large.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_small.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_dynamic.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_large.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_small.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_dynamic.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_large.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_small.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_dynamic.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_large.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_small.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/library1.csproj [moved from src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/dll.csproj with 100% similarity]
src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/library2.csproj [moved from src/coreclr/tests/src/JIT/Methodical/acceptance/ca/csattr.csproj with 96% similarity]
src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/test.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/use.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1.cs [new file with mode: 0644]
src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_d.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_do.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_r.csproj [new file with mode: 0644]
src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_ro.csproj [new file with mode: 0644]

index 267c735..dd15f0c 100644 (file)
         <ExcludeList Include="$(XunitTestBinBase)\JIT\Directed\pinning\object-pin\object-pin\object-pin.cmd" >
              <Issue>2452</Issue>
         </ExcludeList>
+        <ExcludeList Include="$(XunitTestBinBase)\JIT\Methodical\Boxing\xlang\_dbgsin_cs_il\_dbgsin_cs_il.cmd" >
+             <Issue>3216</Issue>
+        </ExcludeList>
+        <ExcludeList Include="$(XunitTestBinBase)\JIT\Methodical\Boxing\xlang\_odbgsin_cs_il\_odbgsin_cs_il.cmd" >
+             <Issue>3216</Issue>
+        </ExcludeList>
+        <ExcludeList Include="$(XunitTestBinBase)\JIT\Methodical\Boxing\xlang\_relsin_cs_il\_relsin_cs_il.cmd" >
+             <Issue>3216</Issue>
+        </ExcludeList>
+        <ExcludeList Include="$(XunitTestBinBase)\JIT\Methodical\Boxing\xlang\_orelsin_cs_il\_orelsin_cs_il.cmd" >
+             <Issue>3216</Issue>
+        </ExcludeList>
     </ItemGroup>
 </Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor.cs b/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor.cs
new file mode 100644 (file)
index 0000000..a9ab526
--- /dev/null
@@ -0,0 +1,52 @@
+//<Title>Nullable types have a default single-parameter constructor</Title>
+//<Description>
+// A nullable type can be created with a single argument constructor
+// The HasValue property will be set to true, and the Value property will get the value of the constructor
+//</Description>
+
+#pragma warning disable 0649
+
+using System;
+
+
+interface BaseInter { }
+interface GenInter<T> { }
+
+struct Struct { }
+struct ImplStruct : BaseInter { }
+struct OpenGenImplStruct<T> : GenInter<T> { }
+struct CloseGenImplStruct : GenInter<int> { }
+
+class Foo { }
+
+class NullableTest1
+{
+    static int? i = new int?(1);
+    static Struct? s = new Struct?(new Struct());
+    static ImplStruct? imps = new ImplStruct?(new ImplStruct());
+    static OpenGenImplStruct<Foo>? genfoo = new OpenGenImplStruct<Foo>?(new OpenGenImplStruct<Foo>());
+    static CloseGenImplStruct? genint = new CloseGenImplStruct?(new CloseGenImplStruct());
+
+
+    public static void Run()
+    {
+        Test.Eval(i.HasValue);
+        Test.Eval(i.Value, 1);
+        Test.Eval(s.HasValue);
+        Test.Eval(s.Value, default(Struct));
+        Test.Eval(imps.HasValue);
+        Test.Eval(imps.Value, default(ImplStruct));
+        Test.Eval(genfoo.HasValue);
+        Test.Eval(genfoo.Value, default(OpenGenImplStruct<Foo>));
+        Test.Eval(genint.HasValue);
+        Test.Eval(genint.Value, default(CloseGenImplStruct));
+    }
+}
+
+class NullableTests
+{
+    public static void Run()
+    {
+        NullableTest1.Run();
+    }
+}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_d.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_d.csproj
new file mode 100644 (file)
index 0000000..69664ee
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="constructor.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_do.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_do.csproj
new file mode 100644 (file)
index 0000000..d35f3e7
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="constructor.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_r.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_r.csproj
new file mode 100644 (file)
index 0000000..967bfd4
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="constructor.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_ro.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/constructor_ro.csproj
new file mode 100644 (file)
index 0000000..700fa5a
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="constructor.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode.cs b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode.cs
new file mode 100644 (file)
index 0000000..63057cb
--- /dev/null
@@ -0,0 +1,65 @@
+//<Title>Nullable types lift the GetHashCode() method from the underlying struct</Title>
+//<Description>
+//  A nullable type with a value returns the GetHashCode() from the underlying struct
+//</Description>
+
+#pragma warning disable 0649
+using System;
+
+
+interface BaseInter { }
+interface GenInter<T> { }
+
+struct Struct { }
+struct ImplStruct : BaseInter { }
+struct OpenGenImplStruct<T> : GenInter<T> { }
+struct CloseGenImplStruct : GenInter<int> { }
+
+class Foo { }
+
+class NullableTest1
+{
+    static int? i = new int?(1);
+    static Struct? s = new Struct?(new Struct());
+    static ImplStruct? imps = new ImplStruct?(new ImplStruct());
+    static OpenGenImplStruct<Foo>? genfoo = new OpenGenImplStruct<Foo>?(new OpenGenImplStruct<Foo>());
+    static CloseGenImplStruct? genint = new CloseGenImplStruct?(new CloseGenImplStruct());
+
+
+    public static void Run()
+    {
+        Test.Eval(i.GetHashCode(), 1.GetHashCode());
+        Test.Eval(s.GetHashCode(), default(Struct).GetHashCode());
+        Test.Eval(imps.GetHashCode(), default(ImplStruct).GetHashCode());
+        Test.Eval(genfoo.GetHashCode(), default(OpenGenImplStruct<Foo>).GetHashCode());
+        Test.Eval(genint.GetHashCode(), default(CloseGenImplStruct).GetHashCode());
+    }
+}
+
+class NullableTest2
+{
+    static int? i;
+    static Struct? s;
+    static ImplStruct? imps;
+    static OpenGenImplStruct<Foo>? genfoo;
+    static CloseGenImplStruct? genint;
+
+
+    public static void Run()
+    {
+        Test.Eval(i.GetHashCode(), 0);
+        Test.Eval(s.GetHashCode(), 0);
+        Test.Eval(imps.GetHashCode(), 0);
+        Test.Eval(genfoo.GetHashCode(), 0);
+        Test.Eval(genint.GetHashCode(), 0);
+    }
+}
+
+public class NullableTests
+{
+    public static void Run()
+    {
+        NullableTest1.Run();
+        NullableTest2.Run();
+    }
+}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_d.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_d.csproj
new file mode 100644 (file)
index 0000000..eca9941
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hashcode.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_do.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_do.csproj
new file mode 100644 (file)
index 0000000..cdb6b16
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hashcode.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_r.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_r.csproj
new file mode 100644 (file)
index 0000000..5a69fd2
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hashcode.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_ro.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hashcode_ro.csproj
new file mode 100644 (file)
index 0000000..183718c
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hashcode.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue.cs b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue.cs
new file mode 100644 (file)
index 0000000..e37a72b
--- /dev/null
@@ -0,0 +1,74 @@
+//<Title>Nullable types have the HasValue property</Title>
+//<Description>
+// If the nullable type has a null value, HasValue is false
+//</Description>
+
+
+using System;
+
+
+interface BaseInter { }
+interface GenInter<T> { }
+
+struct Struct { }
+struct ImplStruct : BaseInter { }
+struct OpenGenImplStruct<T> : GenInter<T> { }
+struct CloseGenImplStruct : GenInter<int> { }
+
+class Foo { }
+
+class NullableTest1
+{
+    static int? i;
+    static Struct? s;
+    static ImplStruct? imps;
+    static OpenGenImplStruct<Foo>? genfoo;
+    static CloseGenImplStruct? genint;
+
+    public static void Run()
+    {
+        Test.IsFalse(i.HasValue);
+        i = null;
+        Test.IsFalse(i.HasValue);
+        Test.IsFalse(s.HasValue);
+        s = null;
+        Test.IsFalse(s.HasValue);
+        Test.IsFalse(imps.HasValue);
+        imps = null;
+        Test.IsFalse(imps.HasValue);
+        Test.IsFalse(genfoo.HasValue);
+        genfoo = null;
+        Test.IsFalse(genfoo.HasValue);
+        Test.IsFalse(genint.HasValue);
+        genint = null;
+        Test.IsFalse(genint.HasValue);
+    }
+}
+
+class NullableTest2
+{
+    static int? i = 1;
+    static Struct? s = new Struct();
+    static ImplStruct? imps = new ImplStruct();
+    static OpenGenImplStruct<Foo>? genfoo = new OpenGenImplStruct<Foo>();
+    static CloseGenImplStruct? genint = new CloseGenImplStruct();
+
+
+    public static void Run()
+    {
+        Test.Eval(i.HasValue);
+        Test.Eval(s.HasValue);
+        Test.Eval(imps.HasValue);
+        Test.Eval(genfoo.HasValue);
+        Test.Eval(genint.HasValue);
+    }
+}
+
+class NullableTests
+{
+    public static void Run()
+    {
+        NullableTest1.Run();
+        NullableTest2.Run();
+    }
+}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_d.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_d.csproj
new file mode 100644 (file)
index 0000000..163576a
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hasvalue.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_do.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_do.csproj
new file mode 100644 (file)
index 0000000..60c1e97
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hasvalue.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_r.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_r.csproj
new file mode 100644 (file)
index 0000000..f1e1004
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hasvalue.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_ro.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/hasvalue_ro.csproj
new file mode 100644 (file)
index 0000000..89a1992
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hasvalue.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation.cs b/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation.cs
new file mode 100644 (file)
index 0000000..dfde5f9
--- /dev/null
@@ -0,0 +1,83 @@
+//<Title>Nullable types lift the GetHashCode() method from the underlying struct</Title>
+//<Description>
+//  A nullable type with a value returns the GetHashCode() from the underlying struct
+//</Description>
+
+
+using System;
+
+
+interface BaseInter
+{
+    int Foo();
+}
+interface GenInter<T> 
+{
+    int Foo();
+}
+
+struct Struct 
+{
+    public int Foo() { return 0x0001; }
+}
+
+struct ImplStruct : BaseInter 
+{
+    public int Foo() { return 0x0010; }
+}
+
+struct OpenGenImplStruct<T> : GenInter<T> 
+{
+    public int Foo() { return 0x0100; }
+}
+
+struct CloseGenImplStruct : GenInter<int>
+{
+    public int Foo() { return 0x1000; }
+}
+
+struct CloseGenImplGenAndImplStruct<T> : BaseInter, GenInter<int>
+{
+    public int Foo() { return 0x1001; }
+    int BaseInter.Foo() { return 0x0110; }
+}
+
+
+class Foo { }
+
+class NullableTests
+{
+    static Struct?  s = default(Struct);
+    static ImplStruct? imps = default(ImplStruct);
+    static OpenGenImplStruct<int>? ogis = default(OpenGenImplStruct<int>);
+    static CloseGenImplStruct? cgis = default(CloseGenImplStruct);
+    static CloseGenImplGenAndImplStruct<int>? cgiis = default(CloseGenImplGenAndImplStruct<int>);
+
+    public static void Run()
+    {
+        Test.Eval(s.Value.Foo() == 0x0001);
+        Test.Eval(((Struct)((object)s)).Foo() == 0x0001);
+        Test.Eval(((Struct)((ValueType)s)).Foo() == 0x0001);
+
+        Test.Eval(imps.Value.Foo() == 0x0010);
+        Test.Eval(((ImplStruct)(object)imps).Foo() == 0x0010);
+        Test.Eval(((ImplStruct)(ValueType)imps).Foo() == 0x0010);
+        Test.Eval(((BaseInter)imps).Foo() == 0x0010);
+
+        Test.Eval(ogis.Value.Foo() == 0x0100);
+        Test.Eval(((OpenGenImplStruct<int>)(object)ogis).Foo() == 0x0100);
+        Test.Eval(((OpenGenImplStruct<int>)(ValueType)ogis).Foo() == 0x0100);
+        Test.Eval(((GenInter<int>)ogis).Foo() == 0x0100);
+
+        Test.Eval(cgis.Value.Foo() == 0x1000);
+        Test.Eval(((CloseGenImplStruct)(object)cgis).Foo() == 0x1000);
+        Test.Eval(((CloseGenImplStruct)(ValueType)cgis).Foo() == 0x1000);
+        Test.Eval(((GenInter<int>)cgis).Foo() == 0x1000);
+
+        Test.Eval(cgiis.Value.Foo() == 0x1001);
+        Test.Eval(((CloseGenImplGenAndImplStruct<int>)(object)cgiis).Foo() == 0x1001);
+        Test.Eval(((CloseGenImplGenAndImplStruct<int>)(ValueType)cgiis).Foo() == 0x1001);
+        Test.Eval(((GenInter<int>)cgiis).Foo() == 0x1001);
+        Test.Eval(((BaseInter)cgiis).Foo() == 0x0110);
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_d.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_d.csproj
new file mode 100644 (file)
index 0000000..213e01b
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="invocation.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_do.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_do.csproj
new file mode 100644 (file)
index 0000000..f8e1765
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="invocation.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_r.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_r.csproj
new file mode 100644 (file)
index 0000000..db88db0
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="invocation.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_ro.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/invocation_ro.csproj
new file mode 100644 (file)
index 0000000..9fa324c
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="invocation.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring.cs b/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring.cs
new file mode 100644 (file)
index 0000000..21cbf31
--- /dev/null
@@ -0,0 +1,66 @@
+//<Title>Nullable types lift the ToString() method from the underlying struct</Title>
+//<Description>
+//  A nullable type with a value returns the ToString() from the underlying struct
+//</Description>
+
+#pragma warning disable 0649
+
+using System;
+
+
+interface BaseInter { }
+interface GenInter<T> { }
+
+struct Struct { }
+struct ImplStruct : BaseInter { }
+struct OpenGenImplStruct<T> : GenInter<T> { }
+struct CloseGenImplStruct : GenInter<int> { }
+
+class Foo { }
+
+class NullableTest1
+{
+    static int? i = new int?(1);
+    static Struct? s = new Struct?(new Struct());
+    static ImplStruct? imps = new ImplStruct?(new ImplStruct());
+    static OpenGenImplStruct<Foo>? genfoo = new OpenGenImplStruct<Foo>?(new OpenGenImplStruct<Foo>());
+    static CloseGenImplStruct? genint = new CloseGenImplStruct?(new CloseGenImplStruct());
+
+
+    public static void Run()
+    {
+        Test.Eval(i.ToString(), 1.ToString());
+        Test.Eval(s.ToString(), default(Struct).ToString());
+        Test.Eval(imps.ToString(), default(ImplStruct).ToString());
+        Test.Eval(genfoo.ToString(), default(OpenGenImplStruct<Foo>).ToString());
+        Test.Eval(genint.ToString(), default(CloseGenImplStruct).ToString());
+    }
+}
+
+class NullableTest2
+{
+    static int? i;
+    static Struct? s;
+    static ImplStruct? imps;
+    static OpenGenImplStruct<Foo>? genfoo;
+    static CloseGenImplStruct? genint;
+
+
+    public static void Run()
+    {
+        Test.Eval(i.ToString(), "");
+        Test.Eval(s.ToString(), "");
+        Test.Eval(imps.ToString(), "");
+        Test.Eval(genfoo.ToString(), "");
+        Test.Eval(genint.ToString(), "");
+    }
+}
+
+class NullableTests
+{
+    public static void Run()
+    {
+        NullableTest1.Run();
+        NullableTest2.Run();
+    }
+}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_d.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_d.csproj
new file mode 100644 (file)
index 0000000..37da224
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="tostring.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_do.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_do.csproj
new file mode 100644 (file)
index 0000000..761f449
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="tostring.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_r.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_r.csproj
new file mode 100644 (file)
index 0000000..c17c40d
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="tostring.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_ro.csproj b/src/coreclr/tests/src/JIT/Directed/nullabletypes/tostring_ro.csproj
new file mode 100644 (file)
index 0000000..ad8bf12
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="tostring.cs" />
+    <Compile Include="invokecommon.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1.cs b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1.cs
new file mode 100644 (file)
index 0000000..b9b4174
--- /dev/null
@@ -0,0 +1,116 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+
+namespace PrimitiveVT
+{
+    internal unsafe class CallConv1
+    {
+        private static Random s_rand = new Random();
+        private VT1A _vt1a;
+        private static VT1A s_x;
+
+        private static int f1(VT1B x, VT1B y) { return x.m + y.m; }
+        private VT1B f2a(VT1A x, VT1B y) { VT1B z; z.m = x.m + y.m; return z; }
+        private VT1B f2b(VT1A x, VT1B y) { return f2a(x, y); }
+        private VT1B f2(VT1A x, VT1B y) { return f2b(x, y); }
+        private static int f3(ref VT1B x, VT1B y) { return x.m - y.m; }
+        private VT1B f4(VT1A x, VT1B y) { VT1B z; z.m = x.m - y.m; return z; }
+        private static int f5(VT1B x, VT1A y) { return x.m * y.m; }
+        private int f6(VT1B[] x, VT1B y) { return x[0].m * y.m; }
+        private VT1B f7(VT1A x, VT1B y) { return f4(x, y); }
+        private float f8(VT1A x, VT1B y) { return x.m / y.m; }
+
+        private static VT1B[,] f9a() { return new VT1B[1, 2]; }
+        private static VT1B[,] f9() { return f9a(); }
+        private int f10(params VT1B[] args) { int sum = 0; for (int i = 0; i < args.Length; sum += args[i], i++) { }; return sum; }
+
+
+        private static int Main()
+        {
+            int a = s_rand.Next();
+
+            CallConv1 t = new CallConv1();
+            t._vt1a.m = a;
+
+            VT1B vt1b = (VT1B)t._vt1a;
+
+            int b = vt1b;
+            if (b != a)
+            {
+                Console.WriteLine("FAILED, b!=a");
+                return 1;
+            }
+
+            int c = (int)(VT1B)(VT1A)(VT1B)(int)(VT1B)t._vt1a;
+            if (c != b)
+            {
+                Console.WriteLine("FAILED, c!=b");
+                return 1;
+            }
+
+            int d = s_rand.Next();
+            int e = Int32.MinValue;
+            int f = Int32.MaxValue / 2;
+            s_x = new VT1A();
+            VT1B[] yarr = new VT1B[2];
+            yarr[0] = new VT1B(e);
+            VT1B y = yarr[0];
+            s_x.m = d;
+            VT1B u = s_x * y - (new VT1B(f)) + yarr[0] + (VT1B)s_x + (VT1B)f + y * s_x + (int)(s_x / (d % 2 == 0 ? (VT1B)(d / 2) : (VT1B)(d + 1 / 2)));
+            int w = f5((VT1B)s_x, (VT1A)y) + t.f6(yarr, (VT1B)s_x) + f1(y, d) + (int)t.f8((VT1A)(VT1B)d, (d % 2 == 0 ? (VT1B)(d / 2) : (VT1B)(d + 1 / 2)));
+            if (u != w)
+            {
+                Console.WriteLine("FAILED, u!=w");
+                Console.WriteLine(u);
+                Console.WriteLine(w);
+                return 1;
+            }
+
+            for (VT1B z = 3; z <= 10; z++, t.f2((VT1A)y, 1)) { }
+
+            if (f3(ref y, Int32.MinValue) != 0)
+            {
+                Console.WriteLine("FAILED, f3(y,Int32.MinValue)!=0");
+                Console.WriteLine(f3(ref y, Int32.MinValue));
+                return 1;
+            }
+
+            VT1B* o = stackalloc VT1B[3];
+            o[0] = 1;
+            o[1] = 2;
+            o[2] = 3;
+
+            if ((t.f7((VT1A)o[2], o[0])) != 2)
+            {
+                Console.WriteLine("FAILED (t.f7((VT1A)o[2], o[0]))!=2");
+                Console.WriteLine(t.f7((VT1A)o[2], o[0]));
+                return 1;
+            }
+
+            VT1B[][,] arr = new VT1B[2][,];
+            arr[1] = f9();
+            arr[1][0, 0] = (VT1B)(*o);
+
+            if ((t.f10(arr[1][0, 0])) != 1)
+            {
+                Console.WriteLine("FAILED (t.f10(arr[1][0,0]))!=1");
+                Console.WriteLine(t.f10(arr[1][0, 0]));
+                return 1;
+            }
+
+            if ((t.f10(arr[1][0, 0], t.f7((VT1A)(new VT1B(2)), (VT1B)o[0]), 4)) != 6)
+            {
+                Console.WriteLine("FAILED (t.f10(arr[1][0,0], t.f7((VT1A)(new VT1B(2)), (VT1B)o[0]), 4))!=6");
+                Console.WriteLine(t.f10(arr[1][0, 0], t.f7((VT1A)(new VT1B(2)), (VT1B)o[0]), 4));
+                return 1;
+            }
+
+            Console.WriteLine("PASSED");
+            return 100;
+        }
+    }
+}
+
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_d.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_d.csproj
new file mode 100644 (file)
index 0000000..bfc748d
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv1.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_do.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_do.csproj
new file mode 100644 (file)
index 0000000..aa2fb95
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv1.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_r.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_r.csproj
new file mode 100644 (file)
index 0000000..afa835c
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv1.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_ro.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv1_cs_ro.csproj
new file mode 100644 (file)
index 0000000..3ab5a3b
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv1.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2.cs b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2.cs
new file mode 100644 (file)
index 0000000..ad1a4ae
--- /dev/null
@@ -0,0 +1,116 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+
+namespace PrimitiveVT
+{
+    internal unsafe class CallConv2
+    {
+        private static Random s_rand = new Random();
+        private VT2A _vt1a;
+        private static VT2A s_x;
+
+        private static uint f1(VT2B x, VT2B y) { return x.m + y.m; }
+        private VT2B f2a(VT2A x, VT2B y) { VT2B z; z.m = x.m + y.m; return z; }
+        private VT2B f2b(VT2A x, VT2B y) { return f2a(x, y); }
+        private VT2B f2(VT2A x, VT2B y) { return f2b(x, y); }
+        private static uint f3(ref VT2B x, VT2B y) { return x.m - y.m; }
+        private VT2B f4(VT2A x, VT2B y) { VT2B z; z.m = x.m - y.m; return z; }
+        private static uint f5(VT2B x, VT2A y) { return x.m * y.m; }
+        private uint f6(VT2B[] x, VT2B y) { return x[0].m * y.m; }
+        private VT2B f7(VT2A x, VT2B y) { return f4(x, y); }
+        private float f8(VT2A x, VT2B y) { return x.m / y.m; }
+
+        private static VT2B[,] f9a() { return new VT2B[1, 2]; }
+        private static VT2B[,] f9() { return f9a(); }
+        private uint f10(params VT2B[] args) { uint sum = 0; for (uint i = 0; i < args.Length; sum += args[i], i++) { }; return sum; }
+
+
+        private static int Main()
+        {
+            uint a = (uint)s_rand.Next();
+
+            CallConv2 t = new CallConv2();
+            t._vt1a.m = a;
+
+            VT2B vt1b = (VT2B)t._vt1a;
+
+            uint b = vt1b;
+            if (b != a)
+            {
+                Console.WriteLine("FAILED, b!=a");
+                return 1;
+            }
+
+            uint c = (uint)(VT2B)(VT2A)(VT2B)(uint)(VT2B)t._vt1a;
+            if (c != b)
+            {
+                Console.WriteLine("FAILED, c!=b");
+                return 1;
+            }
+
+            uint d = (uint)s_rand.Next();
+            uint e = UInt32.MinValue + 2;
+            uint f = UInt32.MaxValue / 2;
+            s_x = new VT2A();
+            VT2B[] yarr = new VT2B[2];
+            yarr[0] = new VT2B(e);
+            VT2B y = yarr[0];
+            s_x.m = d;
+            VT2B u = s_x * y - (new VT2B(f)) + yarr[0] + (VT2B)s_x + (VT2B)f + y * s_x + (uint)(s_x / (d % 2 == 0 ? (VT2B)(d / 2) : (VT2B)(d + 1 / 2)));
+            uint w = f5((VT2B)s_x, (VT2A)y) + t.f6(yarr, (VT2B)s_x) + f1(y, d) + (uint)t.f8((VT2A)(VT2B)d, (d % 2 == 0 ? (VT2B)(d / 2) : (VT2B)(d + 1 / 2)));
+            if (u != w)
+            {
+                Console.WriteLine("FAILED, u!=w");
+                Console.WriteLine(u);
+                Console.WriteLine(w);
+                return 1;
+            }
+
+            for (VT2B z = 3; z <= 10; z++, t.f2((VT2A)y, 1)) { }
+
+            if (f3(ref y, UInt32.MinValue) != 2)
+            {
+                Console.WriteLine("FAILED, f3(y,UInt32.MinValue)!=2");
+                Console.WriteLine(f3(ref y, UInt32.MinValue));
+                return 1;
+            }
+
+            VT2B* o = stackalloc VT2B[3];
+            o[0] = 1;
+            o[1] = 2;
+            o[2] = 3;
+
+            if ((t.f7((VT2A)o[2], o[0])) != 2)
+            {
+                Console.WriteLine("FAILED (t.f7((VT2A)o[2], o[0]))!=2");
+                Console.WriteLine(t.f7((VT2A)o[2], o[0]));
+                return 1;
+            }
+
+            VT2B[][,] arr = new VT2B[2][,];
+            arr[1] = f9();
+            arr[1][0, 0] = (VT2B)(*o);
+
+            if ((t.f10(arr[1][0, 0])) != 1)
+            {
+                Console.WriteLine("FAILED (t.f10(arr[1][0,0]))!=1");
+                Console.WriteLine(t.f10(arr[1][0, 0]));
+                return 1;
+            }
+
+            if ((t.f10(arr[1][0, 0], t.f7((VT2A)(new VT2B(2)), (VT2B)o[0]), 4)) != 6)
+            {
+                Console.WriteLine("FAILED (t.f10(arr[1][0,0], t.f7((VT2A)(new VT2B(2)), (VT2B)o[0]), 4))!=6");
+                Console.WriteLine(t.f10(arr[1][0, 0], t.f7((VT2A)(new VT2B(2)), (VT2B)o[0]), 4));
+                return 1;
+            }
+
+            Console.WriteLine("PASSED");
+            return 100;
+        }
+    }
+}
+
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_d.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_d.csproj
new file mode 100644 (file)
index 0000000..2818e2a
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv2.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_do.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_do.csproj
new file mode 100644 (file)
index 0000000..81d1506
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv2.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_r.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_r.csproj
new file mode 100644 (file)
index 0000000..5f1af4b
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv2.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_ro.csproj b/src/coreclr/tests/src/JIT/Directed/perffix/primitivevt/callconv2_cs_ro.csproj
new file mode 100644 (file)
index 0000000..ff331ad
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="callconv2.cs" />
+    <ProjectReference Include="..\..\prefix\primitivevt\helper.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Generics/Fields/getclassfrommethodparam.cs b/src/coreclr/tests/src/JIT/Generics/Fields/getclassfrommethodparam.cs
new file mode 100644 (file)
index 0000000..8f682b7
--- /dev/null
@@ -0,0 +1,54 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Runtime.CompilerServices;
+
+namespace Sandbox3
+{
+    public class Foo<F>
+    {
+        public static string Value;
+
+        // [MethodImpl(MethodImplOptions.Synchronized | MethodImplOptions.NoInlining)]
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Action<T>(T value)
+        {
+            Value = value.ToString();
+        }
+    }
+
+    public class Dummy { }
+
+    internal class Program
+    {
+        private static int Main(string[] args)
+        {
+            string s = "hello";
+
+            Foo<object>.Action<string>(s);
+            if (Foo<object>.Value != s)
+                throw new Exception();
+
+            int i = 10;
+            Foo<Dummy>.Action<int>(i);
+            if (Foo<object>.Value != s)
+                throw new Exception();
+            if (Foo<Dummy>.Value != i.ToString())
+                throw new Exception();
+
+            object o = new object();
+            Foo<int>.Action<object>(o);
+            if (Foo<int>.Value != o.ToString())
+                throw new Exception();
+            if (Foo<object>.Value != s)
+                throw new Exception();
+            if (Foo<Dummy>.Value != i.ToString())
+                throw new Exception();
+
+            Console.WriteLine("Test SUCCESS");
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Generics/Fields/getclassfrommethodparam.csproj b/src/coreclr/tests/src/JIT/Generics/Fields/getclassfrommethodparam.csproj
new file mode 100644 (file)
index 0000000..2f23553
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="getclassfrommethodparam.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_dbgsin_cs_il.csproj b/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_dbgsin_cs_il.csproj
new file mode 100644 (file)
index 0000000..ba08d6a
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="sin.cs" />
+    <ProjectReference Include="sinlib_il_d.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_odbgsin_cs_il.csproj b/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_odbgsin_cs_il.csproj
new file mode 100644 (file)
index 0000000..4c72130
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="sin.cs" />
+    <ProjectReference Include="sinlib_il_d.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_orelsin_cs_il.csproj b/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_orelsin_cs_il.csproj
new file mode 100644 (file)
index 0000000..dcfb2a8
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="sin.cs" />
+    <ProjectReference Include="sinlib_il_r.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_relsin_cs_il.csproj b/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/_relsin_cs_il.csproj
new file mode 100644 (file)
index 0000000..00f442a
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="sin.cs" />
+    <ProjectReference Include="sinlib_il_r.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/sinlib_il_d.ilproj b/src/coreclr/tests/src/JIT/Methodical/Boxing/xlang/sinlib_il_d.ilproj
new file mode 100644 (file)
index 0000000..ccb6d3f
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <CLRTestKind>BuildOnly</CLRTestKind>
+    <GenerateRunScript>false</GenerateRunScript> 
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <DebugType>Full</DebugType>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="sinlib.il" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic.cs b/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic.cs
new file mode 100644 (file)
index 0000000..86020d8
--- /dev/null
@@ -0,0 +1,601 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace JitTest
+{
+    using System;
+
+    internal class Test
+    {
+        private static void Fail(String func, double arg, double exp, double res)
+        {
+            throw new Exception(func + "(" + arg.ToString() +
+                ") failed: expected " + exp.ToString() + ", got " + res.ToString());
+        }
+
+        private static void Fail2(String func, double arg1, double arg2, double exp, double res)
+        {
+            throw new Exception(func + "(" + arg1.ToString() +
+                ", " + arg2.ToString() +
+                ") failed: expected " + exp.ToString() + ", got " + res.ToString());
+        }
+
+        private static void TestAbs(double arg, double exp)
+        {
+            double res = Math.Abs(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Abs(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Abs(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Abs", arg, exp, res);
+        }
+
+        private static void TestAcos(double arg, double exp)
+        {
+            double res = Math.Acos(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Acos(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Acos(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Acos", res, arg, exp);
+        }
+
+        private static void TestAsin(double arg, double exp)
+        {
+            double res = Math.Asin(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Asin(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Asin(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Asin", res, arg, exp);
+        }
+
+        private static void TestAtan(double arg, double exp)
+        {
+            double res = Math.Atan(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Atan(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Atan(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Atan", res, arg, exp);
+        }
+
+        private static void TestCeiling(double arg, double exp)
+        {
+            double res = Math.Ceiling(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Ceiling(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Ceiling(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Ceiling", res, arg, exp);
+        }
+
+        private static void TestCos(double arg, double exp)
+        {
+            double res = Math.Cos(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Cos(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Cos(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Cos", res, arg, exp);
+        }
+
+        private static void TestCosh(double arg, double exp)
+        {
+            double res = Math.Cosh(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Cosh(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Cosh(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Cosh", res, arg, exp);
+        }
+
+        private static void TestExp(double arg, double exp)
+        {
+            double res = Math.Exp(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Exp(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Exp(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Exp", res, arg, exp);
+        }
+
+        private static void TestFloor(double arg, double exp)
+        {
+            double res = Math.Floor(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Floor(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Floor(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Floor", res, arg, exp);
+        }
+
+        private static void TestLog(double arg, double exp)
+        {
+            double res = Math.Log(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Log(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Log(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Log", res, arg, exp);
+        }
+
+        private static void TestLog10(double arg, double exp)
+        {
+            double res = Math.Log10(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Log10(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Log10(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Log10", res, arg, exp);
+        }
+
+        private static void TestRound(double arg, double exp)
+        {
+            double res = Math.Round(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Round(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Round(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Round", res, arg, exp);
+        }
+
+        private static void TestSign(double arg, double exp)
+        {
+            double res = Math.Sign(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Sign(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Sign(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Sign", res, arg, exp);
+        }
+
+        private static void TestSin(double arg, double exp)
+        {
+            double res = Math.Sin(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Sin(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Sin(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Sin", res, arg, exp);
+        }
+
+        private static void TestSinh(double arg, double exp)
+        {
+            double res = Math.Sinh(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Sinh(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Sinh(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Sinh", res, arg, exp);
+        }
+
+        private static void TestSqrt(double arg, double exp)
+        {
+            double res = Math.Sqrt(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Sqrt(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Sqrt(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Sqrt", res, arg, exp);
+        }
+
+        private static void TestTan(double arg, double exp)
+        {
+            double res = Math.Tan(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Tan(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Tan(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Tan", res, arg, exp);
+        }
+
+        private static void TestTanh(double arg, double exp)
+        {
+            double res = Math.Tanh(arg);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Tanh(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Tanh(" + arg.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail("Tanh", res, arg, exp);
+        }
+
+        private static void TestLog2(double arg1, double arg2, double exp)
+        {
+            double res = Math.Log(arg1, arg2);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Log2(" + arg1.ToString() + ", " + arg2.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Log2(" + arg1.ToString() + ", " + arg2.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail2("Log2", arg1, arg2, exp, res);
+        }
+
+        private static void TestPow(double arg1, double arg2, double exp)
+        {
+            double res = Math.Pow(arg1, arg2);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Pow(" + arg1.ToString() + ", " + arg2.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Pow(" + arg1.ToString() + ", " + arg2.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail2("Pow", arg1, arg2, exp, res);
+        }
+
+        private static void TestAtan2(double arg1, double arg2, double exp)
+        {
+            double res = Math.Atan2(arg1, arg2);
+            if (Double.IsNaN(exp) && Double.IsNaN(res) ||
+                Double.IsNegativeInfinity(exp) && Double.IsNegativeInfinity(res) ||
+                Double.IsPositiveInfinity(exp) && Double.IsPositiveInfinity(res))
+            {
+                Console.WriteLine(
+                    "Atan2(" + arg1.ToString() + ", " + arg2.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            if (exp == res)
+            {
+                Console.WriteLine(
+                    "Atan2(" + arg1.ToString() + ", " + arg2.ToString() + ") == " + res.ToString() + "  OK");
+
+                return;
+            }
+            Fail2("Atan2", arg1, arg2, exp, res);
+        }
+
+        private static int Main()
+        {
+            try
+            {
+                TestAbs(Double.NaN, Double.NaN);
+                TestAbs(Double.NegativeInfinity, Double.PositiveInfinity);
+                TestAbs(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestAcos(Double.NaN, Double.NaN);
+                TestAcos(Double.NegativeInfinity, Double.NaN);
+                TestAcos(Double.PositiveInfinity, Double.NaN);
+
+                TestAsin(Double.NaN, Double.NaN);
+                TestAsin(Double.NegativeInfinity, Double.NaN);
+                TestAsin(Double.PositiveInfinity, Double.NaN);
+
+                TestAtan(Double.NaN, Double.NaN);
+                TestAtan(Double.NegativeInfinity, -Math.PI / 2);
+                TestAtan(Double.PositiveInfinity, Math.PI / 2);
+
+                TestCeiling(Double.NaN, Double.NaN);
+                TestCeiling(Double.NegativeInfinity, Double.NegativeInfinity);
+                TestCeiling(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestCos(Double.NaN, Double.NaN);
+                TestCos(Double.NegativeInfinity, Double.NaN);
+                TestCos(Double.PositiveInfinity, Double.NaN);
+
+                TestCosh(Double.NaN, Double.NaN);
+                TestCosh(Double.NegativeInfinity, Double.PositiveInfinity);
+                TestCosh(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestExp(Double.NaN, Double.NaN);
+                TestExp(Double.NegativeInfinity, 0.0);
+                TestExp(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestFloor(Double.NaN, Double.NaN);
+                TestFloor(Double.NegativeInfinity, Double.NegativeInfinity);
+                TestFloor(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestLog(Double.NaN, Double.NaN);
+                TestLog(Double.NegativeInfinity, Double.NaN);
+                TestLog(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestLog10(Double.NaN, Double.NaN);
+                TestLog10(Double.NegativeInfinity, Double.NaN);
+                TestLog10(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestRound(Double.NaN, Double.NaN);
+                TestRound(Double.NegativeInfinity, Double.NegativeInfinity);
+                TestRound(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestSign(Double.NegativeInfinity, -1);
+                TestSign(Double.PositiveInfinity, 1);
+
+                TestSin(Double.NaN, Double.NaN);
+                TestSin(Double.NegativeInfinity, Double.NaN);
+                TestSin(Double.PositiveInfinity, Double.NaN);
+
+                TestSinh(Double.NaN, Double.NaN);
+                TestSinh(Double.NegativeInfinity, Double.NegativeInfinity);
+                TestSinh(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestSqrt(Double.NaN, Double.NaN);
+                TestSqrt(Double.NegativeInfinity, Double.NaN);
+                TestSqrt(Double.PositiveInfinity, Double.PositiveInfinity);
+
+                TestTan(Double.NaN, Double.NaN);
+                TestTan(Double.NegativeInfinity, Double.NaN);
+                TestTan(Double.PositiveInfinity, Double.NaN);
+
+                TestTanh(Double.NaN, Double.NaN);
+                TestTanh(Double.NegativeInfinity, -1);
+                TestTanh(Double.PositiveInfinity, 1);
+
+                TestLog2(Double.NaN, Double.NaN, Double.NaN);
+                TestLog2(Double.NaN, Double.PositiveInfinity, Double.NaN);
+                TestLog2(Double.NaN, Double.NegativeInfinity, Double.NaN);
+                TestLog2(Double.PositiveInfinity, Double.NaN, Double.NaN);
+                TestLog2(Double.PositiveInfinity, Double.PositiveInfinity, Double.NaN);
+                TestLog2(Double.PositiveInfinity, Double.NegativeInfinity, Double.NaN);
+                TestLog2(Double.NegativeInfinity, Double.NaN, Double.NaN);
+                TestLog2(Double.NegativeInfinity, Double.PositiveInfinity, Double.NaN);
+                TestLog2(Double.NegativeInfinity, Double.NegativeInfinity, Double.NaN);
+
+                TestPow(Double.NaN, Double.NaN, Double.NaN);
+                TestPow(Double.NaN, Double.PositiveInfinity, Double.NaN);
+                TestPow(Double.NaN, Double.NegativeInfinity, Double.NaN);
+                TestPow(Double.PositiveInfinity, Double.NaN, Double.NaN);
+                TestPow(Double.PositiveInfinity, Double.PositiveInfinity, Double.PositiveInfinity);
+                TestPow(Double.PositiveInfinity, Double.NegativeInfinity, 0.0);
+                TestPow(Double.NegativeInfinity, Double.NaN, Double.NaN);
+                TestPow(Double.NegativeInfinity, Double.PositiveInfinity, Double.PositiveInfinity);
+                TestPow(Double.NegativeInfinity, Double.NegativeInfinity, 0.0);
+
+                TestAtan2(Double.NaN, Double.NaN, Double.NaN);
+                TestAtan2(Double.NaN, Double.PositiveInfinity, Double.NaN);
+                TestAtan2(Double.NaN, Double.NegativeInfinity, Double.NaN);
+                TestAtan2(Double.PositiveInfinity, Double.NaN, Double.NaN);
+                TestAtan2(Double.PositiveInfinity, Double.PositiveInfinity, Double.NaN);
+                TestAtan2(Double.PositiveInfinity, Double.NegativeInfinity, Double.NaN);
+                TestAtan2(Double.NegativeInfinity, Double.NaN, Double.NaN);
+                TestAtan2(Double.NegativeInfinity, Double.PositiveInfinity, Double.NaN);
+                TestAtan2(Double.NegativeInfinity, Double.NegativeInfinity, Double.NaN);
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.ToString());
+                Console.WriteLine("=== FAILED ===");
+                return 101;
+            }
+            Console.WriteLine("=== PASSED ===");
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_d.csproj b/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_d.csproj
new file mode 100644 (file)
index 0000000..d50d8ed
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="intrinsic.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_do.csproj b/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_do.csproj
new file mode 100644 (file)
index 0000000..2f4ed1b
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="intrinsic.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_r.csproj b/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_r.csproj
new file mode 100644 (file)
index 0000000..d602f78
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="intrinsic.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_ro.csproj b/src/coreclr/tests/src/JIT/Methodical/NaN/intrinsic_cs_ro.csproj
new file mode 100644 (file)
index 0000000..4393d33
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="intrinsic.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/acceptance/ca/csattr.cs b/src/coreclr/tests/src/JIT/Methodical/acceptance/ca/csattr.cs
deleted file mode 100644 (file)
index d438f4c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System;
-
-public enum SomeStuff { e1 = 1, e17 = 17 }
-
-[System.AttributeUsageAttribute(System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple = true)]
-public class Attr : System.Attribute
-{
-    public Attr() { name = "default"; num = 0; }
-
-    public Attr(int[] up0)
-    {
-        name = "intgcarray";
-        unnamed_list = up0[0].ToString();
-    }
-    public Attr(System.Type[] up0)
-    {
-        name = "typegcarray";
-        unnamed_list = up0[0].ToString();
-    }
-    public Attr(int up0)
-    {
-        name = "int";
-        unnamed_list = up0.ToString();
-    }
-    public Attr(int up0, float up1)
-    {
-        name = "int_float";
-        unnamed_list = up0.ToString() + "\t|" + String.Format("{0:N2}", up1);
-    }
-    public Attr(SomeStuff up0)
-    {
-        name = "enum";
-        unnamed_list = up0.ToString();
-    }
-    public Attr(String up0)
-    {
-        name = "String";
-        unnamed_list = up0;
-    }
-    public Attr(int[] up0, System.Type[] up1, int up2, float up3, SomeStuff up4, String up5)
-    {
-        name = "multiple1";
-        unnamed_list = up0[0].ToString() + "\t|" +
-                up1[0].ToString() + "\t|" +
-                up2.ToString() + "\t|" +
-                String.Format("{0:N2}", up3) + "\t|" +
-                up4.ToString() + "\t|" +
-                up5;
-    }
-    public Attr(int[] up0, ulong up1, int up2, double up3, SomeStuff up4, String up5)
-    {
-        name = "multiple2";
-        unnamed_list = up0[0].ToString() + "\t|" +
-                up1.ToString() + "\t|" +
-                up2.ToString() + "\t|" +
-                String.Format("{0:N2}", up3) + "\t|" +
-                up4.ToString() + "\t|" +
-                up5;
-    }
-
-    public int[] np0;
-    public String[] np1;
-    public System.Type np2;
-    public double np3;
-    public String name;
-    public int num;
-    public String unnamed_list;
-}
\ No newline at end of file
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname.cs b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname.cs
new file mode 100644 (file)
index 0000000..4e0a8a7
--- /dev/null
@@ -0,0 +1,48 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// static field
+
+using System;
+
+namespace Precise
+{
+    internal class Driver
+    {
+        public static int Main()
+        {
+            try
+            {
+                Console.WriteLine("Testing .cctor() invocation by accessing static field across assembly");
+                Console.WriteLine();
+                Console.WriteLine("Before calling static field");
+                // .cctor should not run yet
+                if (measure.a != 0xCC)
+                {
+                    Console.WriteLine("in Main(), measure.a is {0}", measure.a);
+                    Console.WriteLine("FAILED");
+                    return 1;
+                }
+                // the next line should trigger .cctor
+                test.b = 0xF;
+                Console.WriteLine("After calling static field");
+                if (measure.a != 212)
+                {
+                    Console.WriteLine("in Main(), measure.a is {0}", measure.a);
+                    Console.WriteLine("FAILED");
+                    return -1;
+                }
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e);
+                Console.WriteLine(e.StackTrace);
+                return -1;
+            }
+            Console.WriteLine();
+            Console.WriteLine("PASSED");
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_d.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_d.csproj
new file mode 100644 (file)
index 0000000..c6da143
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="assemname.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_do.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_do.csproj
new file mode 100644 (file)
index 0000000..18d99af
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="assemname.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_r.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_r.csproj
new file mode 100644 (file)
index 0000000..952f68e
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="assemname.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_ro.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/assemname_cs_ro.csproj
new file mode 100644 (file)
index 0000000..5d40311
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="assemname.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1.cs b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1.cs
new file mode 100644 (file)
index 0000000..711a267
--- /dev/null
@@ -0,0 +1,69 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// static field
+
+using System;
+using System.Threading;
+
+namespace Precise
+{
+    internal class Driver
+    {
+        public static void f()
+        {
+            test.b = 0xF;
+        }
+        public static int Main()
+        {
+            try
+            {
+                Console.WriteLine("Testing .cctor() invocation by accessing static field across assembly");
+                Console.WriteLine();
+                Console.WriteLine("Before calling static field");
+                // .cctor should not run yet
+                if (measure.a != 0xCC)
+                {
+                    Console.WriteLine("in Main(), measure.a is {0}", measure.a);
+                    Console.WriteLine("FAILED");
+                    return 1;
+                }
+                // spin up 5 threads
+                Thread[] tasks = new Thread[5];
+                for (int i = 0; i < 5; i++)
+                {
+                    ThreadStart threadStart = new ThreadStart(f);
+                    tasks[i] = new Thread(threadStart);
+                    tasks[i].Name = "Thread #" + i;
+                }
+
+                // Start tasks
+                foreach (Thread _thread in tasks)
+                    _thread.Start();
+
+                // Wait for tasks to finish    
+                foreach (Thread _thread in tasks)
+                    _thread.Join();
+
+                // Should only have one thread accessing .cctor
+                Console.WriteLine("After calling static field");
+                if (measure.a != 212)
+                {
+                    Console.WriteLine("in Main(), measure.a is {0}", measure.a);
+                    Console.WriteLine("FAILED");
+                    return -1;
+                }
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e);
+                Console.WriteLine(e.StackTrace);
+                return -1;
+            }
+            Console.WriteLine();
+            Console.WriteLine("PASSED");
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_d.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_d.csproj
new file mode 100644 (file)
index 0000000..bf4d1f2
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads1.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_do.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_do.csproj
new file mode 100644 (file)
index 0000000..a5954d8
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads1.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_r.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_r.csproj
new file mode 100644 (file)
index 0000000..f995cfd
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads1.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_ro.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads1_cs_ro.csproj
new file mode 100644 (file)
index 0000000..c2d9fcf
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads1.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2.cs b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2.cs
new file mode 100644 (file)
index 0000000..bb7bdea
--- /dev/null
@@ -0,0 +1,70 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// static field
+
+using System;
+using System.Threading;
+using System.Runtime.CompilerServices;
+
+namespace Precise
+{
+    internal class Driver
+    {
+        public static void f()
+        {
+            RuntimeHelpers.RunClassConstructor(typeof(test).TypeHandle);
+        }
+        public static int Main()
+        {
+            try
+            {
+                Console.WriteLine("Testing .cctor() invocation by accessing static field across assembly");
+                Console.WriteLine();
+                Console.WriteLine("Before calling static field");
+                // .cctor should not run yet
+                if (measure.a != 0xCC)
+                {
+                    Console.WriteLine("in Main(), measure.a is {0}", measure.a);
+                    Console.WriteLine("FAILED");
+                    return 1;
+                }
+                // spin up 5 threads
+                Thread[] tasks = new Thread[5];
+                for (int i = 0; i < 5; i++)
+                {
+                    ThreadStart threadStart = new ThreadStart(f);
+                    tasks[i] = new Thread(threadStart);
+                    tasks[i].Name = "Thread #" + i;
+                }
+
+                // Start tasks
+                foreach (Thread _thread in tasks)
+                    _thread.Start();
+
+                // Wait for tasks to finish    
+                foreach (Thread _thread in tasks)
+                    _thread.Join();
+
+                // Should only have accessed .cctor only once
+                Console.WriteLine("After calling static field");
+                if (measure.a != 212)
+                {
+                    Console.WriteLine("in Main(), measure.a is {0}", measure.a);
+                    Console.WriteLine("FAILED");
+                    return -1;
+                }
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e);
+                Console.WriteLine(e.StackTrace);
+                return -1;
+            }
+            Console.WriteLine();
+            Console.WriteLine("PASSED");
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_d.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_d.csproj
new file mode 100644 (file)
index 0000000..8d9a8b1
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads2.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_do.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_do.csproj
new file mode 100644 (file)
index 0000000..62dca0e
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads2.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_r.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_r.csproj
new file mode 100644 (file)
index 0000000..500f563
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads2.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_ro.csproj b/src/coreclr/tests/src/JIT/Methodical/cctor/misc/threads2_cs_ro.csproj
new file mode 100644 (file)
index 0000000..45ce980
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="threads2.cs" />
+    <ProjectReference Include="testlib.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto.cs b/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto.cs
new file mode 100644 (file)
index 0000000..8c46521
--- /dev/null
@@ -0,0 +1,73 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/* dead code in a switch contained ina a loop */
+
+using System;
+
+namespace strswitch
+{
+    internal class Class1
+    {
+        private static TestUtil.TestLog s_testLog;
+
+        static Class1()
+        {
+            System.IO.StringWriter expectedOut = new System.IO.StringWriter();
+
+            expectedOut.WriteLine("s == one");
+            expectedOut.WriteLine("s == two");
+            expectedOut.WriteLine("s == three");
+            expectedOut.WriteLine("s == four");
+            expectedOut.WriteLine("s == five");
+            expectedOut.WriteLine("Greater than five");
+
+            s_testLog = new TestUtil.TestLog(expectedOut);
+        }
+        [STAThread]
+        private static int Main(string[] args)
+        {
+            string[] s = { "one", "two", "three", "four", "five", "six" };
+            s_testLog.StartRecording();
+            for (int i = 0; i < s.Length; i++)
+            {
+                switch (s[i])
+                {
+                    case "one":
+                        Console.WriteLine("s == one");
+                        break;
+                    case "two":
+                        Console.WriteLine("s == two");
+                        break;
+                    case "three":
+                        try
+                        {
+                            Console.WriteLine("s == three");
+                        }
+                        catch (System.Exception e)
+                        {
+                            Console.WriteLine(e);
+                            goto continueloop;
+                        }
+                        break;
+                    case "four":
+                        Console.WriteLine("s == four");
+                        break;
+                    case "five":
+                        Console.WriteLine("s == five");
+                        break;
+                    default:
+                        Console.WriteLine("Greater than five");
+                        break;
+                };
+                continue;
+            continueloop:
+                Console.WriteLine("Continuing");
+            };
+            s_testLog.StopRecording();
+
+            return s_testLog.VerifyOutput();
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_d.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_d.csproj
new file mode 100644 (file)
index 0000000..4e911db
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="loopstrswitchgoto.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_do.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_do.csproj
new file mode 100644 (file)
index 0000000..85a7f19
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="loopstrswitchgoto.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_r.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_r.csproj
new file mode 100644 (file)
index 0000000..faaf96c
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="loopstrswitchgoto.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_ro.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/deadcode/loopstrswitchgoto_ro.csproj
new file mode 100644 (file)
index 0000000..c3fab1a
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="loopstrswitchgoto.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_d.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_d.csproj
new file mode 100644 (file)
index 0000000..c1639ec
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="catchrettoinnertry.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_do.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_do.csproj
new file mode 100644 (file)
index 0000000..9c4ff8f
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="catchrettoinnertry.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_r.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_r.csproj
new file mode 100644 (file)
index 0000000..464dabb
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="catchrettoinnertry.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_ro.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/finallyexec/catchrettoinnertry_cs_ro.csproj
new file mode 100644 (file)
index 0000000..e4fd703
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="catchrettoinnertry.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal.cs b/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal.cs
new file mode 100644 (file)
index 0000000..a65594f
--- /dev/null
@@ -0,0 +1,278 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/* switch with string values contained in a loop with various try/catch and try/finally constructs */
+
+using System;
+
+namespace strswitch
+{
+    internal class Class1
+    {
+        private static TestUtil.TestLog s_testLog;
+
+        static Class1()
+        {
+            System.IO.StringWriter expectedOut = new System.IO.StringWriter();
+
+            expectedOut.WriteLine("s == one");
+            expectedOut.WriteLine("In inner finally");
+            expectedOut.WriteLine("In outer finally\n");
+            expectedOut.WriteLine("s == two");
+            expectedOut.WriteLine("After two");
+            expectedOut.WriteLine("In inner finally");
+            expectedOut.WriteLine("In outer finally\n");
+            expectedOut.WriteLine("s == three");
+            expectedOut.WriteLine("After three");
+            expectedOut.WriteLine("Ok");
+            expectedOut.WriteLine("After after three");
+            expectedOut.WriteLine("In inner finally");
+            expectedOut.WriteLine("Caught an exception\n");
+            expectedOut.WriteLine("Ok\n");
+            expectedOut.WriteLine("In outer finally\n");
+
+            expectedOut.WriteLine("In four's finally");
+            expectedOut.WriteLine("In inner finally");
+            expectedOut.WriteLine("Caught an exception\n");
+
+            expectedOut.WriteLine("Ok\n");
+
+            expectedOut.WriteLine("In outer finally\n");
+
+            expectedOut.WriteLine("s == five");
+            expectedOut.WriteLine("Five's finally 0");
+            expectedOut.WriteLine("Five's finally 1");
+            expectedOut.WriteLine("Five's finally 2");
+            expectedOut.WriteLine("In inner finally");
+            expectedOut.WriteLine("In outer finally\n");
+
+            expectedOut.WriteLine("Greater than five");
+            expectedOut.WriteLine("in six's finally");
+            expectedOut.WriteLine("In inner finally");
+            expectedOut.WriteLine("In outer finally\n");
+
+            s_testLog = new TestUtil.TestLog(expectedOut);
+        }
+        [STAThread]
+        private static int Main(string[] args)
+        {
+            string[] s = { "one", "two", "three", "four", "five", "six" };
+            s_testLog.StartRecording();
+            for (int i = 0; i < s.Length; i++)
+            {
+            beginloop:
+                try
+                {
+                    try
+                    {
+                        try
+                        {
+                            switch (s[i])
+                            {
+                                case "one":
+                                    try
+                                    {
+                                        Console.WriteLine("s == one");
+                                    }
+                                    catch
+                                    {
+                                        Console.WriteLine("Exception at one");
+                                    }
+                                    break;
+                                case "two":
+                                    try
+                                    {
+                                        Console.WriteLine("s == two");
+                                    }
+                                    finally
+                                    {
+                                        Console.WriteLine("After two");
+                                    }
+                                    break;
+                                case "three":
+                                    try
+                                    {
+                                        try
+                                        {
+                                            Console.WriteLine("s == three");
+                                        }
+                                        catch (System.Exception e)
+                                        {
+                                            Console.WriteLine(e);
+                                            goto continueloop;
+                                        }
+                                    }
+                                    finally
+                                    {
+                                        Console.WriteLine("After three");
+                                        try
+                                        {
+                                            switch (s[s.Length - 1])
+                                            {
+                                                case "six":
+                                                    Console.WriteLine("Ok");
+                                                    Console.WriteLine(s[s.Length]);
+                                                    goto label2;
+                                                default:
+                                                    try
+                                                    {
+                                                        Console.WriteLine("Ack");
+                                                        goto label;
+                                                    }
+                                                    catch
+                                                    {
+                                                        Console.WriteLine("I don't think so ...");
+                                                    }
+                                                    break;
+                                            }
+                                        label:
+                                            Console.WriteLine("Unreached");
+                                            throw new Exception();
+                                        }
+                                        finally
+                                        {
+                                            Console.WriteLine("After after three");
+                                        }
+                                    label2:
+                                        Console.WriteLine("Unreached");
+                                    }
+                                    goto continueloop;
+
+                                case "four":
+                                    try
+                                    {
+                                        try
+                                        {
+                                            Console.WriteLine("s == " + s[s.Length]);
+                                            try
+                                            {
+                                            }
+                                            finally
+                                            {
+                                                Console.WriteLine("Unreached");
+                                            }
+                                        }
+                                        catch (Exception e)
+                                        {
+                                            goto test;
+                                        rethrowex:
+                                            throw;
+                                        test:
+                                            if (e is System.ArithmeticException)
+                                            {
+                                                try
+                                                {
+                                                    Console.WriteLine("unreached ");
+                                                    goto finishfour;
+                                                }
+                                                finally
+                                                {
+                                                    Console.WriteLine("also unreached");
+                                                }
+                                            }
+                                            else
+                                            {
+                                                goto rethrowex;
+                                            }
+                                        }
+                                    }
+                                    finally
+                                    {
+                                        Console.WriteLine("In four's finally");
+                                    }
+                                finishfour:
+                                    break;
+                                case "five":
+                                    try
+                                    {
+                                        try
+                                        {
+                                            try
+                                            {
+                                                Console.WriteLine("s == five");
+                                            }
+                                            finally
+                                            {
+                                                Console.WriteLine("Five's finally 0");
+                                            }
+                                        }
+                                        catch (Exception)
+                                        {
+                                            Console.WriteLine("Unreached");
+                                        }
+                                        finally
+                                        {
+                                            Console.WriteLine("Five's finally 1");
+                                        }
+                                        break;
+                                    }
+                                    finally
+                                    {
+                                        Console.WriteLine("Five's finally 2");
+                                    }
+                                default:
+                                    try
+                                    {
+                                        Console.WriteLine("Greater than five");
+                                        goto finish;
+                                    }
+                                    finally
+                                    {
+                                        Console.WriteLine("in six's finally");
+                                    }
+                            };
+                            continue;
+                        }
+                        finally
+                        {
+                            Console.WriteLine("In inner finally");
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        Console.WriteLine("Caught an exception\n");
+
+                        switch (s[i])
+                        {
+                            case "three":
+                                if (e is System.IndexOutOfRangeException)
+                                {
+                                    Console.WriteLine("Ok\n");
+                                    i++;
+                                    goto beginloop;
+                                }
+                                Console.WriteLine("Unreached\n");
+                                break;
+                            case "four":
+                                if (e is System.IndexOutOfRangeException)
+                                {
+                                    Console.WriteLine("Ok\n");
+                                    i++;
+                                    goto beginloop;
+                                }
+                                Console.WriteLine("Unreached\n");
+                                break;
+                            default:
+                                Console.WriteLine("****** Unreached");
+                                goto continueloop;
+                        }
+                    }
+
+                    Console.WriteLine("Unreached");
+                }
+                finally
+                {
+                    Console.WriteLine("In outer finally\n");
+                }
+
+            continueloop:
+                Console.WriteLine("Continuing");
+            }
+        finish:
+            s_testLog.StopRecording();
+
+            return s_testLog.VerifyOutput();
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_d.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_d.csproj
new file mode 100644 (file)
index 0000000..a57f894
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="strswitchfinal.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_do.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_do.csproj
new file mode 100644 (file)
index 0000000..645794b
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="strswitchfinal.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_r.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_r.csproj
new file mode 100644 (file)
index 0000000..69d42ef
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="strswitchfinal.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_ro.csproj b/src/coreclr/tests/src/JIT/Methodical/eh/interactions/strswitchfinal_ro.csproj
new file mode 100644 (file)
index 0000000..4a9e316
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="strswitchfinal.cs" />
+    <ProjectReference Include="..\common\common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/EHCopyProp.cs b/src/coreclr/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/EHCopyProp.cs
new file mode 100644 (file)
index 0000000..9debcab
--- /dev/null
@@ -0,0 +1,23 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+
+internal static class Exploit
+{
+    private static int Main()
+    {
+        string s = "my string";
+        IntPtr i = Helper.RetypeObject<IntPtr, string>(s);
+        Console.WriteLine(i);
+        if (i != IntPtr.Zero)
+        {
+            return 101;
+        }
+        else
+        {
+            return 100;
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/EHCopyProp.csproj b/src/coreclr/tests/src/JIT/Methodical/flowgraph/dev10_bug679008/EHCopyProp.csproj
new file mode 100644 (file)
index 0000000..c0c83d9
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="EHCopyProp.cs" />
+    <ProjectReference Include="helper.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/localloc/call/call01.cs b/src/coreclr/tests/src/JIT/Methodical/localloc/call/call01.cs
new file mode 100644 (file)
index 0000000..572ccef
--- /dev/null
@@ -0,0 +1,92 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*
+ * Test reading localloc variable with function call.
+ */
+
+using System;
+using LocallocTesting;
+
+internal class LocallocTest
+{
+    private static int s_locallocSize = 0;
+
+    public static unsafe int Main()
+    {
+        ulong local1 = Global.INITIAL_VALUE;
+        ulong local2 = local1 + 1;
+#if LOCALLOC_SMALL
+        Int32* intArray1 = stackalloc Int32[1];
+        Int32* intArray2 = stackalloc Int32[1];
+        s_locallocSize = 1;
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               Int32* intArray2 = stackalloc Int32[0x1000];
+               locallocSize = 0x1000;
+#else
+               Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+               Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+               locallocSize = Global.stackAllocSize;
+#endif
+        Global.initializeStack(intArray1, s_locallocSize, 1000);
+        Global.initializeStack(intArray2, s_locallocSize, 2000);
+
+        if (!func1(1, 2, 3, 4, 5, 6, 7, 8, intArray1, intArray2))
+            return 1;
+
+        if (!Global.verifyStack("intArray1", intArray1, s_locallocSize, 1000))
+        {
+            return 1;
+        }
+        if (!Global.verifyStack("intArray2", intArray2, s_locallocSize, 2000))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local1", local1, Global.INITIAL_VALUE))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local2", local2, Global.INITIAL_VALUE + 1))
+        {
+            return 1;
+        }
+        Console.WriteLine("Passed\n");
+        return 100;
+    }
+
+    private static unsafe bool func1(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, Int32* ar1, Int32* ar2)
+    {
+#if LOCALLOC_SMALL
+        Int32* intArray1 = stackalloc Int32[1];
+        Int32* intArray2 = stackalloc Int32[1];
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               Int32* intArray2 = stackalloc Int32[0x1000];
+#else
+               Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+               Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+#endif
+        Global.initializeStack(intArray1, s_locallocSize, 3000);
+        Global.initializeStack(intArray2, s_locallocSize, 4000);
+
+        if (!Global.verifyStack("ar1", ar1, s_locallocSize, 1000))
+        {
+            return false;
+        }
+        if (!Global.verifyStack("ar2", ar2, s_locallocSize, 2000))
+        {
+            return false;
+        }
+        if (!Global.verifyStack("intArray1", intArray1, s_locallocSize, 3000))
+        {
+            return false;
+        }
+        if (!Global.verifyStack("intArray2", intArray2, s_locallocSize, 4000))
+        {
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Methodical/localloc/call/call01_small.csproj b/src/coreclr/tests/src/JIT/Methodical/localloc/call/call01_small.csproj
new file mode 100644 (file)
index 0000000..c8a8a7e
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="call01.cs" />
+    <ProjectReference Include="..\..\..\jit64\localloc\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest1-xassem.csproj b/src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest1-xassem.csproj
new file mode 100644 (file)
index 0000000..6c34f93
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="test1.cs" />
+    <ProjectReference Include="teststr.csproj" />
+    <ProjectReference Include="testgenstr.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest2-xassem.csproj b/src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest2-xassem.csproj
new file mode 100644 (file)
index 0000000..286a6fa
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="test2.cs" />
+    <ProjectReference Include="teststr.csproj" />
+    <ProjectReference Include="testgenstr.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest4-xassem.csproj b/src/coreclr/tests/src/JIT/Methodical/stringintern/_XAssemblytest4-xassem.csproj
new file mode 100644 (file)
index 0000000..5489f58
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="test4.cs" />
+    <ProjectReference Include="teststr.csproj" />
+    <ProjectReference Include="testgenstr.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/app.config b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/app.config
new file mode 100644 (file)
index 0000000..6f7bbd9
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.20.0" newVersion="4.0.20.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Text.Encoding" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+</configuration>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/b07483.csproj b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/b07483.csproj
new file mode 100644 (file)
index 0000000..6f940cd
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="b07483.sc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/b07483.sc b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M10/b07483/b07483.sc
new file mode 100644 (file)
index 0000000..3d265e0
--- /dev/null
@@ -0,0 +1,136 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+
+internal class Test
+{
+    private int _t = 0;
+    private int _f = 0;
+
+    public static int Main()
+    {
+        Test test = new Test();
+        return (test.Run());
+    }
+
+    public int Run()
+    {
+        bool bFail = false;
+        try
+        {
+            DoAnd();
+            if ((_t != 0) || (_f != 0))
+            {
+                Console.WriteLine("Failure in BitAnd Tests");
+                _t = _f = 0;
+                bFail = true;
+            }
+
+            DoOr();
+            if ((_t != 0) || (_f != 0))
+            {
+                Console.WriteLine("Failure in BitOr Tests");
+                _t = _f = 0;
+                bFail = true;
+            }
+
+            DoXor();
+            if ((_t != 0) || (_f != 0))
+            {
+                Console.WriteLine("Failure in BitXor Tests");
+                _t = _f = 0;
+                bFail = true;
+            }
+
+            if (bFail)
+                return (1);
+
+            return (100);
+        }
+        catch (Exception e)
+        {
+            Console.WriteLine("Exception: {0}", e);
+            return (1);
+        }
+    }
+
+    private void DoAnd()
+    {
+        // bit and tests....
+        Console.WriteLine("Testing And...");
+        if (true & IsTrue())
+            _t--;
+        else
+            throw new Exception("Bad Logic");
+
+        if (false & IsTrue())
+            throw new Exception("Bad Logic");
+        else
+            _t--;
+
+        if (true & IsFalse())
+            throw new Exception("Bad Logic");
+        else
+            _f--;
+
+        if (false & IsFalse())
+            throw new Exception("Bad Logic");
+        else
+            _f--;
+    }
+
+    private void DoOr()
+    {
+        // bit or tests....
+        Console.WriteLine("Testing Or...");
+        if (true | IsTrue())
+            _t--;
+        else
+            throw new Exception("Bad Logic");
+
+        if (false | IsTrue())
+            _t--;
+        else
+            throw new Exception("Bad Logic");
+
+        if (true | IsFalse())
+            _f--;
+        else
+            throw new Exception("Bad Logic");
+
+        if (false | IsFalse())
+            throw new Exception("Bad Logic");
+        else
+            _f--;
+    }
+
+    private void DoXor()
+    {
+        // bit xor tests....
+        Console.WriteLine("Testing Xor...");
+        if (true ^ IsTrue())
+            throw new Exception("Bad Logic");
+        else
+            _t--;
+
+        if (false ^ IsTrue())
+            _t--;
+        else
+            throw new Exception("Bad Logic");
+
+        if (true ^ IsFalse())
+            _f--;
+        else
+            throw new Exception("Bad Logic");
+
+        if (false ^ IsFalse())
+            throw new Exception("Bad Logic");
+        else
+            _f--;
+    }
+
+    public bool IsTrue() { Console.WriteLine("\tIsTrue() called"); _t++; return (true); }
+    public bool IsFalse() { Console.WriteLine("\tIsFalse() called"); _f++; return (false); }
+}
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/app.config b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/app.config
new file mode 100644 (file)
index 0000000..6f7bbd9
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.20.0" newVersion="4.0.20.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Text.Encoding" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+</configuration>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/b43313.cs b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/b43313.cs
new file mode 100644 (file)
index 0000000..59df7fd
--- /dev/null
@@ -0,0 +1,64 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace Test
+{
+    using System;
+
+    class OtherException : Exception
+    {
+    }
+
+    internal struct AA
+    {
+        private static float[] s_afStatic1;
+
+        private static void Main1()
+        {
+            ulong[] param2 = new ulong[10];
+            uint[] local5 = new uint[7];
+            try
+            {
+                try
+                {
+                    int[] local8 = new int[7];
+                    try
+                    {
+                        //.......
+                    }
+                    catch (IndexOutOfRangeException)
+                    {
+                        do
+                        {
+                            //.......
+                        } while (s_afStatic1[233] > 0.0);
+                    }
+                    while (0 != local5[205])
+                        return;
+                }
+                catch (Exception)
+                {
+                    float[] local10 = new float[7];
+                    while ((int)param2[168] != 1)
+                    {
+                        float[] local11 = new float[7];
+                    }
+                }
+            }
+            catch (OtherException) { }
+        }
+        private static int Main()
+        {
+            try
+            {
+                Main1();
+                return -1;
+            }
+            catch (IndexOutOfRangeException)
+            {
+                return 100;
+            }
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/b43313.csproj b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b43313/Desktop/b43313.csproj
new file mode 100644 (file)
index 0000000..6d723f2
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="b43313.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/app.config b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/app.config
new file mode 100644 (file)
index 0000000..6f7bbd9
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.20.0" newVersion="4.0.20.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Text.Encoding" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+</configuration>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/b55197.cs b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/b55197.cs
new file mode 100644 (file)
index 0000000..3085f89
--- /dev/null
@@ -0,0 +1,151 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace Test
+{
+    using System;
+
+    public enum TestEnum
+    {
+        red = 1,
+        green = 2,
+        blue = 4,
+    }
+
+    // In the original program ApplicationException was used, but for the
+    // the purposes of this test any exception other than the one thrown works.
+    class OtherException : Exception
+    {
+    }
+
+    public class BB
+    {
+    }
+
+    public struct AA
+    {
+        public uint Method1(int[] param1)
+        {
+            uint[] local3 = new uint[1];
+            long local4 = App.m_lFwd1;
+            {
+                float[] local5 = new float[] { 108.0f };
+                {
+                    byte[] local7 = new byte[] { };
+                    sbyte local8 = App.m_sbFwd3;
+                    long local9 = App.m_lFwd1;
+                    sbyte[] local10 = (new sbyte[4]);
+                    App.m_asbFwd6 = (new sbyte[111]);
+                    try
+                    {
+                        sbyte[] local11 = new sbyte[] { };
+                        throw new Exception();
+                    }
+                    catch (OtherException) { }
+                }
+                {
+                    sbyte local7 = App.m_sbFwd3;
+                    String[] local8 = new String[] { };
+                    char[] local9 = (new char[81]);
+                    BB local10 = new BB();
+                    object[] local11 = new object[] { null, null, null, null, null };
+                    double[] local12 = new double[] { 109.0 };
+                    {
+                        BB[] local13 = (new BB[22]);
+                        sbyte local14 = App.m_sbFwd3;
+                        ulong[] local15 = App.m_aulFwd7;
+                        for (long[] b244656 = new long[] { local4 }; App.m_bFwd2;)
+                        {
+                            int[] local16 = (new int[30]);
+                            TestEnum local17 = new TestEnum();
+                            BB local18 = new BB();
+                            float local19 = 55.0f;
+                            BB local20 = new BB();
+                            local15 = (new ulong[77]);
+                        }
+                    }
+                }
+                if (App.m_bFwd2)
+                {
+                    try
+                    {
+                        TestEnum local7 = new TestEnum();
+                        String local8 = "109";
+                        bool local9 = false;
+                        float local10 = 110.0f;
+                        long[] local11 = App.m_alFwd8;
+                        TestEnum[] local12 = new TestEnum[] { new TestEnum(), new TestEnum() };
+                        byte[] local13 = App.m_abFwd9;
+                        throw new IndexOutOfRangeException();
+                    }
+                    finally
+                    {
+                        Array[] local7 = App.m_axFwd10;
+                        String local8 = "122";
+                        float local9 = 22.0f;
+                        int[] local10 = (new int[69]);
+                        String[] local11 = (new String[75]);
+                        ulong[] local12 = (new ulong[81]);
+                        uint local13 = 67u;
+                        while (App.m_bFwd2)
+                        {
+                            int[] local14 = new int[] { 1, 50, 79 };
+                            byte[] local15 = App.m_asiFwd11;
+                            ulong[] local16 = (new ulong[20]);
+                        }
+                    }
+                }
+            }
+            {
+                int local5 = 18;
+                object local6 = null;
+                ulong[] local7 = App.m_aulFwd7;
+                TestEnum local8 = new TestEnum();
+                long[] local9 = App.m_alFwd8;
+                sbyte[] local10 = App.m_asuFwd12;
+                try
+                {
+                    char[] local11 = new char[] { '\x25' };
+                    byte[] local12 = App.m_asiFwd11;
+                    double local13 = (0.0);
+                    throw new NullReferenceException();
+                }
+                catch (Exception)
+                {
+                }
+            }
+            return 72u;
+        }
+    }
+
+    internal class App
+    {
+        private static int Main()
+        {
+            try
+            {
+                new AA().Method1(new int[1]);
+                return 1;
+            }
+            catch (Exception)
+            {
+                return 100;
+            }
+        }
+
+        public static long m_lFwd1;
+        public static bool m_bFwd2;
+        public static sbyte m_sbFwd3;
+        public static int m_iFwd4;
+        public static char m_cFwd5;
+        public static sbyte[] m_asbFwd6;
+        public static ulong[] m_aulFwd7;
+        public static long[] m_alFwd8;
+        public static byte[] m_abFwd9;
+        public static Array[] m_axFwd10;
+        public static byte[] m_asiFwd11;
+        public static sbyte[] m_asuFwd12;
+        public static sbyte m_suFwd13;
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/b55197.csproj b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b55197/Desktop/b55197.csproj
new file mode 100644 (file)
index 0000000..6bac65e
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="b55197.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b210352/csharptester.cs b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b210352/csharptester.cs
new file mode 100644 (file)
index 0000000..883ae17
--- /dev/null
@@ -0,0 +1,2741 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Diagnostics;
+
+internal class M
+{
+    public static void GenericClassStaticMethod()
+    {
+        GenericClass<int>.classParameterType = typeof(int);
+        GenericClass<string>.classParameterType = typeof(string);
+        GenericClass<int[]>.classParameterType = typeof(int[]);
+        GenericClass<string[]>.classParameterType = typeof(string[]);
+
+        if (GenericClass<int>.StaticGenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClass<int>.StaticGenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int>.StaticGenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int>.StaticGenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string>.StaticGenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClass<string>.StaticGenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string>.StaticGenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string>.StaticGenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticGenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClass<int[]>.StaticGenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticGenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int[]>.StaticGenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int[]>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int[]>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int[]>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int[]>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticGenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClass<string[]>.StaticGenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticGenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string[]>.StaticGenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string[]>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string[]>.StaticGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string[]>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string[]>.StaticGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<int>.StaticNonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClass<int>.StaticNonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int>.StaticNonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int>.StaticNonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string>.StaticNonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClass<string>.StaticNonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string>.StaticNonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string>.StaticNonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticNonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClass<int[]>.StaticNonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticNonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int[]>.StaticNonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int[]>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int[]>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int[]>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int[]>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticNonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClass<string[]>.StaticNonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticNonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string[]>.StaticNonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string[]>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string[]>.StaticNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string[]>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string[]>.StaticNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<int>.StaticGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) to be 1, but found '" + GenericClass<int>.StaticGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int>.StaticGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethodUsesClassTypeParam<string>(27, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int>.StaticGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int>.StaticGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethodUsesClassTypeParam<int[]>(27, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int>.StaticGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int>.StaticGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticGenericMethodUsesClassTypeParam<string[]>(27, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int>.StaticGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string>.StaticGenericMethodUsesClassTypeParam<int>("", 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethodUsesClassTypeParam<int>(\"\", 1, typeof(int)) to be 1, but found '" + GenericClass<string>.StaticGenericMethodUsesClassTypeParam<int>("", 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string>.StaticGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethodUsesClassTypeParam<string>(\"\", \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string>.StaticGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string>.StaticGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethodUsesClassTypeParam<int[]>(\"\", new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string>.StaticGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string>.StaticGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticGenericMethodUsesClassTypeParam<string[]>(\"\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string>.StaticGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) to be 1, but found '" + GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<string>(new int[0], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int[]>.StaticGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) to be 1, but found '" + GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<string>(new string[0], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string[]>.StaticGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<int>.StaticNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) to be 1, but found '" + GenericClass<int>.StaticNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int>.StaticNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodString(Int32.MaxValue, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int>.StaticNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int>.StaticNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int>.StaticNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int>.StaticNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int>.StaticNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int>.StaticNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string>.StaticNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodIntUsesClassTypeParam(\"wxyzabcdefgh\", 1, typeof(int)) to be 1, but found '" + GenericClass<string>.StaticNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string>.StaticNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodString(\"wxyzabcdefgh\", \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string>.StaticNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string>.StaticNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodIntArrayUsesClassTypeParam(\"wxyzabcdefgh\", new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string>.StaticNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string>.StaticNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string>.StaticNonGenericMethodStringArrayUsesClassTypeParam(\"wxyzabcdefgh\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string>.StaticNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodIntUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, 1, typeof(int)) to be 1, but found '" + GenericClass<int[]>.StaticNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<int[]>.StaticNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodString(new int[] {Int32.MaxValue, Int32.MinValue}, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<int[]>.StaticNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<int[]>.StaticNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodIntArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<int[]>.StaticNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<int[]>.StaticNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<int[]>.StaticNonGenericMethodStringArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<int[]>.StaticNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) to be 1, but found '" + GenericClass<string[]>.StaticNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClass<string[]>.StaticNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodString(new string[1000], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClass<string[]>.StaticNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClass<string[]>.StaticNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClass<string[]>.StaticNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClass<string[]>.StaticNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClass<string[]>.StaticNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClass<string[]>.StaticNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+    }
+
+    public static void GenericClassInstanceMethod()
+    {
+        GenericClass<int>.classParameterType = typeof(int);
+        GenericClass<string>.classParameterType = typeof(string);
+        GenericClass<int[]>.classParameterType = typeof(int[]);
+        GenericClass<string[]>.classParameterType = typeof(string[]);
+
+        GenericClass<int> GenericClassInt = new GenericClass<int>();
+        GenericClass<string> GenericClassString = new GenericClass<string>();
+        GenericClass<int[]> GenericClassIntArray = new GenericClass<int[]>();
+        GenericClass<string[]> GenericClassStringArray = new GenericClass<string[]>();
+
+        if (GenericClassInt.GenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClassInt.GenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassInt.GenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassInt.GenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.GenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClassString.GenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.GenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.GenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClassIntArray.GenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.GenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClassStringArray.GenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.GenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassInt.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassInt.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassString.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassIntArray.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassStringArray.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassInt.GenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) to be 1, but found '" + GenericClassInt.GenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassInt.GenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<string>(27, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassInt.GenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.GenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<int[]>(27, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.GenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.GenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<string[]>(27, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.GenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.GenericMethodUsesClassTypeParam<int>("", 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<int>(\"\", 1, typeof(int)) to be 1, but found '" + GenericClassString.GenericMethodUsesClassTypeParam<int>("", 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.GenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<string>(\"\", \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.GenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.GenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<int[]>(\"\", new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.GenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.GenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<string[]>(\"\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.GenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) to be 1, but found '" + GenericClassIntArray.GenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<string>(new int[0], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.GenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.GenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.GenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.GenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.GenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) to be 1, but found '" + GenericClassStringArray.GenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<string>(new string[0], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.GenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.GenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.GenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.GenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.GenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) to be 1, but found '" + GenericClassInt.NonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodString(Int32.MaxValue, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassInt.NonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.NonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.NonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.NonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.NonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodIntUsesClassTypeParam(\"wxyzabcdefgh\", 1, typeof(int)) to be 1, but found '" + GenericClassString.NonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodString(\"wxyzabcdefgh\", \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.NonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.NonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodIntArrayUsesClassTypeParam(\"wxyzabcdefgh\", new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.NonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.NonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodStringArrayUsesClassTypeParam(\"wxyzabcdefgh\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.NonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodIntUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, 1, typeof(int)) to be 1, but found '" + GenericClassIntArray.NonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodString(new int[] {Int32.MaxValue, Int32.MinValue}, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.NonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.NonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodIntArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.NonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.NonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodStringArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.NonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) to be 1, but found '" + GenericClassStringArray.NonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodString(new string[1000], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.NonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.NonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.NonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.NonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.NonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+    }
+
+    public static void GenericClassVirtualMethod()
+    {
+        GenericClass<int>.classParameterType = typeof(int);
+        GenericClass<string>.classParameterType = typeof(string);
+        GenericClass<int[]>.classParameterType = typeof(int[]);
+        GenericClass<string[]>.classParameterType = typeof(string[]);
+
+        GenericClass<int> GenericClassInt = new GenericClass<int>();
+        GenericClass<string> GenericClassString = new GenericClass<string>();
+        GenericClass<int[]> GenericClassIntArray = new GenericClass<int[]>();
+        GenericClass<string[]> GenericClassStringArray = new GenericClass<string[]>();
+
+        GenericClassInheritsFromGenericClass<int> GenericClassInheritsFromGenericClassInt = new GenericClassInheritsFromGenericClass<int>();
+        GenericClassInheritsFromGenericClass<string> GenericClassInheritsFromGenericClassString = new GenericClassInheritsFromGenericClass<string>();
+        GenericClassInheritsFromGenericClass<int[]> GenericClassInheritsFromGenericClassIntArray = new GenericClassInheritsFromGenericClass<int[]>();
+        GenericClassInheritsFromGenericClass<string[]> GenericClassInheritsFromGenericClassStringArray = new GenericClassInheritsFromGenericClass<string[]>();
+
+        GenericClass<int> GenericClassInheritsFromGenericClassCastAsGenericClassInt = new GenericClassInheritsFromGenericClass<int>();
+        GenericClass<string> GenericClassInheritsFromGenericClassCastAsGenericClassString = new GenericClassInheritsFromGenericClass<string>();
+        GenericClass<int[]> GenericClassInheritsFromGenericClassCastAsGenericClassIntArray = new GenericClassInheritsFromGenericClass<int[]>();
+        GenericClass<string[]> GenericClassInheritsFromGenericClassCastAsGenericClassStringArray = new GenericClassInheritsFromGenericClass<string[]>();
+
+        if (GenericClassInt.VirtualGenericMethod<int>(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethod<int>(1, typeof(int, true)) to be 1, but found '" + GenericClassInt.VirtualGenericMethod<int>(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassInt.VirtualGenericMethod<string>("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethod<string>(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassInt.VirtualGenericMethod<string>("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassString.VirtualGenericMethod<int>(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethod<int>(1, typeof(int, true)) to be 1, but found '" + GenericClassString.VirtualGenericMethod<int>(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassString.VirtualGenericMethod<string>("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethod<string>(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassString.VirtualGenericMethod<string>("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int, true)) to be 1, but found '" + GenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualGenericMethod<string>("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethod<string>(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassIntArray.VirtualGenericMethod<string>("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int, true)) to be 1, but found '" + GenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualGenericMethod<string>("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethod<string>(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassStringArray.VirtualGenericMethod<string>("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassInt.VirtualNonGenericMethodInt(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodInt(1, typeof(int, true)) to be 1, but found '" + GenericClassInt.VirtualNonGenericMethodInt(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassInt.VirtualNonGenericMethodString("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodString(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassInt.VirtualNonGenericMethodString("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassString.VirtualNonGenericMethodInt(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodInt(1, typeof(int, true)) to be 1, but found '" + GenericClassString.VirtualNonGenericMethodInt(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassString.VirtualNonGenericMethodString("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodString(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassString.VirtualNonGenericMethodString("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int, true)) to be 1, but found '" + GenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualNonGenericMethodString("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodString(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassIntArray.VirtualNonGenericMethodString("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int, true)) to be 1, but found '" + GenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualNonGenericMethodString("aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodString(\"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassStringArray.VirtualNonGenericMethodString("aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int, true)) to be 1, but found '" + GenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassString.VirtualGenericMethodUsesClassTypeParam<int>("", 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethodUsesClassTypeParam<int>(\"\", 1, typeof(int, true)) to be 1, but found '" + GenericClassString.VirtualGenericMethodUsesClassTypeParam<int>("", 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassString.VirtualGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethodUsesClassTypeParam<string>(\"\", \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassString.VirtualGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>(\"\", new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>(\"\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int, true)) to be 1, but found '" + GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int, true)) to be 1, but found '" + GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int, true)) to be 1, but found '" + GenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassInt.VirtualNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodString(Int32.MaxValue, \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassInt.VirtualNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam(\"wxyzabcdefgh\", 1, typeof(int, true)) to be 1, but found '" + GenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassString.VirtualNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodString(\"wxyzabcdefgh\", \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassString.VirtualNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam(\"wxyzabcdefgh\", new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam(\"wxyzabcdefgh\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, 1, typeof(int, true)) to be 1, but found '" + GenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassIntArray.VirtualNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodString(new int[] {Int32.MaxValue, Int32.MinValue}, \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassIntArray.VirtualNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int), true) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int, true)) to be 1, but found '" + GenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int), true) + "'");
+        }
+
+        if (GenericClassStringArray.VirtualNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string), true) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodString(new string[1000], \"aaaa\", typeof(string, true)) to be \"aaaa\", but found '" + GenericClassStringArray.VirtualNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string), true) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]), true), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] {1,2,3} typeof(int[]), true) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]), true)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), true) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), true)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassString.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassString.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassString.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassString.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassString.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassString.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<int>("", 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<int>(\"\", 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<int>("", 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<string>(\"\", \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>(\"\", new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>(\"\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodString(Int32.MaxValue, \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam(\"wxyzabcdefgh\", 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodString(\"wxyzabcdefgh\", \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam(\"wxyzabcdefgh\", new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam(\"wxyzabcdefgh\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodString(new int[] {Int32.MaxValue, Int32.MinValue}, \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodString(new string[1000], \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<int>(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<string>(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<string>("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<int[]>(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodInt(1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodString(\"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodString("aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int>(27, 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualGenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<int>("", 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<int>(\"\", 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<int>("", 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<string>(\"\", \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>(\"\", new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>(\"\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualGenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualGenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodString(Int32.MaxValue, \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.VirtualNonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam(\"wxyzabcdefgh\", 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodString(\"wxyzabcdefgh\", \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam(\"wxyzabcdefgh\", new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam(\"wxyzabcdefgh\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.VirtualNonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodString(new int[] {Int32.MaxValue, Int32.MinValue}, \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int), false) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int, false)) to be 1, but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int), false) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string), false) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodString(new string[1000], \"aaaa\", typeof(string, false)) to be \"aaaa\", but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string), false) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]), false), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] {1,2,3} typeof(int[]), false) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]), false)) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[]), false) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.VirtualNonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]), false)) + "'");
+        }
+    }
+
+    public static void GenericClassDelegate()
+    {
+        GenericClass<int>.classParameterType = typeof(int);
+        GenericClass<string>.classParameterType = typeof(string);
+        GenericClass<int[]>.classParameterType = typeof(int[]);
+        GenericClass<string[]>.classParameterType = typeof(string[]);
+
+        GenericClass<int> GenericClassInt = new GenericClass<int>();
+        GenericClass<string> GenericClassString = new GenericClass<string>();
+        GenericClass<int[]> GenericClassIntArray = new GenericClass<int[]>();
+        GenericClass<string[]> GenericClassStringArray = new GenericClass<string[]>();
+        GenericClass<int>.genericDelegate<int> GenericClassIntGenericDelegateInt = new GenericClass<int>.genericDelegate<int>(GenericClassInt.GenericMethod<int>);
+        if (GenericClassIntGenericDelegateInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntGenericDelegateInt(1, typeof(int)) to be 1, but found '" + GenericClassIntGenericDelegateInt(1, typeof(int)) + "'");
+        }
+
+        GenericClass<int>.genericDelegate<string> GenericClassIntGenericDelegateString = new GenericClass<int>.genericDelegate<string>(GenericClassInt.GenericMethod<string>);
+        if (GenericClassIntGenericDelegateString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntGenericDelegateString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntGenericDelegateString("aaaa", typeof(string)) + "'");
+        }
+        if (Utils.CompareArray<int>(GenericClassInt.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.GenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClassString.GenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.GenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.GenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClassIntArray.GenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.GenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethod<int>(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<int>(1, typeof(int)) to be 1, but found '" + GenericClassStringArray.GenericMethod<int>(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethod<string>("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<string>(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.GenericMethod<string>("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<int[]>(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.GenericMethod<int[]>(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethod<string[]>(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.GenericMethod<string[]>(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassInt.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassInt.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassString.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassIntArray.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodInt(1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodInt(1, typeof(int)) to be 1, but found '" + GenericClassStringArray.NonGenericMethodInt(1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodString("aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodString(\"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.NonGenericMethodString("aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodIntArray(new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.NonGenericMethodIntArray(new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodStringArray(new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.NonGenericMethodStringArray(new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassInt.GenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) to be 1, but found '" + GenericClassInt.GenericMethodUsesClassTypeParam<int>(27, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassInt.GenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<string>(27, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassInt.GenericMethodUsesClassTypeParam<string>(27, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.GenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<int[]>(27, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.GenericMethodUsesClassTypeParam<int[]>(27, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.GenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.GenericMethodUsesClassTypeParam<string[]>(27, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.GenericMethodUsesClassTypeParam<string[]>(27, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.GenericMethodUsesClassTypeParam<int>("", 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<int>(\"\", 1, typeof(int)) to be 1, but found '" + GenericClassString.GenericMethodUsesClassTypeParam<int>("", 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.GenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<string>(\"\", \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.GenericMethodUsesClassTypeParam<string>("", "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.GenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<int[]>(\"\", new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.GenericMethodUsesClassTypeParam<int[]>("", new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.GenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.GenericMethodUsesClassTypeParam<string[]>(\"\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.GenericMethodUsesClassTypeParam<string[]>("", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) to be 1, but found '" + GenericClassIntArray.GenericMethodUsesClassTypeParam<int>(new int[0], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.GenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<string>(new int[0], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.GenericMethodUsesClassTypeParam<string>(new int[0], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.GenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.GenericMethodUsesClassTypeParam<int[]>(new int[0], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.GenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.GenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.GenericMethodUsesClassTypeParam<string[]>(new int[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) to be 1, but found '" + GenericClassStringArray.GenericMethodUsesClassTypeParam<int>(new string[0], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.GenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<string>(new string[0], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.GenericMethodUsesClassTypeParam<string>(new string[0], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.GenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.GenericMethodUsesClassTypeParam<int[]>(new string[0], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.GenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.GenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.GenericMethodUsesClassTypeParam<string[]>(new string[0], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) to be 1, but found '" + GenericClassInt.NonGenericMethodIntUsesClassTypeParam(Int32.MaxValue, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassInt.NonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodString(Int32.MaxValue, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassInt.NonGenericMethodStringUsesClassTypeParam(Int32.MaxValue, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.NonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassInt.NonGenericMethodIntArrayUsesClassTypeParam(Int32.MaxValue, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.NonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.NonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassInt.NonGenericMethodStringArrayUsesClassTypeParam(Int32.MaxValue, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodIntUsesClassTypeParam(\"wxyzabcdefgh\", 1, typeof(int)) to be 1, but found '" + GenericClassString.NonGenericMethodIntUsesClassTypeParam("wxyzabcdefgh", 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassString.NonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodString(\"wxyzabcdefgh\", \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassString.NonGenericMethodStringUsesClassTypeParam("wxyzabcdefgh", "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.NonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodIntArrayUsesClassTypeParam(\"wxyzabcdefgh\", new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassString.NonGenericMethodIntArrayUsesClassTypeParam("wxyzabcdefgh", new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.NonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.NonGenericMethodStringArrayUsesClassTypeParam(\"wxyzabcdefgh\", new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassString.NonGenericMethodStringArrayUsesClassTypeParam("wxyzabcdefgh", new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodIntUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, 1, typeof(int)) to be 1, but found '" + GenericClassIntArray.NonGenericMethodIntUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassIntArray.NonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodString(new int[] {Int32.MaxValue, Int32.MinValue}, \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassIntArray.NonGenericMethodStringUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.NonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodIntArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.NonGenericMethodIntArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.NonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.NonGenericMethodStringArrayUsesClassTypeParam(new int[] {Int32.MaxValue, Int32.MinValue}, new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.NonGenericMethodStringArrayUsesClassTypeParam(new int[] { Int32.MaxValue, Int32.MinValue }, new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) != 1)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) to be 1, but found '" + GenericClassStringArray.NonGenericMethodIntUsesClassTypeParam(new string[1000], 1, typeof(int)) + "'");
+        }
+
+        if (GenericClassStringArray.NonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string)) != "aaaa")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodString(new string[1000], \"aaaa\", typeof(string)) to be \"aaaa\", but found '" + GenericClassStringArray.NonGenericMethodStringUsesClassTypeParam(new string[1000], "aaaa", typeof(string)) + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.NonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[])), new int[] { 1, 2, 3 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] {1,2,3} typeof(int[])) to be int[] {1,2,3}, but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.NonGenericMethodIntArrayUsesClassTypeParam(new string[1000], new int[] { 1, 2, 3 }, typeof(int[]))) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.NonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[])), new string[] { "abc", "def", "ghi", "jkl" }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.NonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] {\"abc\",\"def\",\"ghi\",\"jkl\"} typeof(string[])) to be string[] {\"abc\",\"def\",\"ghi\",\"jkl\"}, but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.NonGenericMethodStringArrayUsesClassTypeParam(new string[1000], new string[] { "abc", "def", "ghi", "jkl" }, typeof(string[]))) + "'");
+        }
+    }
+
+    public static void GenericClassField()
+    {
+        GenericClass<int>.classParameterType = typeof(int);
+        GenericClass<string>.classParameterType = typeof(string);
+        GenericClass<int[]>.classParameterType = typeof(int[]);
+        GenericClass<string[]>.classParameterType = typeof(string[]);
+
+        GenericClass<int> GenericClassInt = new GenericClass<int>();
+        GenericClass<string> GenericClassString = new GenericClass<string>();
+        GenericClass<int[]> GenericClassIntArray = new GenericClass<int[]>();
+        GenericClass<string[]> GenericClassStringArray = new GenericClass<string[]>();
+
+        GenericClassInt.genericField = Int32.MaxValue;
+        GenericClassInt.nongenericIntField = Int32.MinValue;
+        GenericClassInt.nongenericStringField = "";
+        GenericClassInt.nongenericIntArrayField = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInt.nongenericStringArrayField = new string[] { "", "", "", " " };
+
+        if (GenericClassInt.genericField != Int32.MaxValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.genericField to be '" + Int32.MaxValue + "', but found '" + GenericClassInt.genericField + "'");
+        }
+
+        if (GenericClassInt.nongenericIntField != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericIntField to be '" + Int32.MinValue + "', but found '" + GenericClassInt.nongenericIntField + "'");
+        }
+
+        if (GenericClassInt.nongenericStringField != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericStringField to be '" + "" + "', but found '" + GenericClassInt.nongenericStringField + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.nongenericIntArrayField, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericIntArrayField to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInt.nongenericIntArrayField) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.nongenericStringArrayField, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericStringArrayField to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInt.nongenericStringArrayField) + "'");
+        }
+
+        GenericClassString.nongenericIntField = Int32.MinValue;
+        GenericClassString.nongenericStringField = "";
+        GenericClassString.nongenericIntArrayField = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassString.nongenericStringArrayField = new string[] { "", "", "", " " };
+
+        if (GenericClassString.genericField != null)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.genericField to be 'null', but found '" + GenericClassString.genericField + "'");
+        }
+
+        if (GenericClassString.nongenericIntField != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericIntField to be '" + Int32.MinValue + "', but found '" + GenericClassString.nongenericIntField + "'");
+        }
+
+        if (GenericClassString.nongenericStringField != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericStringField to be '" + "" + "', but found '" + GenericClassString.nongenericStringField + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.nongenericIntArrayField, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericIntArrayField to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassString.nongenericIntArrayField) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.nongenericStringArrayField, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericStringArrayField to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassString.nongenericStringArrayField) + "'");
+        }
+
+        GenericClassIntArray.genericField = new int[] { 6, 4, 2, 1, 0 };
+        GenericClassIntArray.nongenericIntField = Int32.MinValue;
+        GenericClassIntArray.nongenericStringField = "";
+        GenericClassIntArray.nongenericIntArrayField = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassIntArray.nongenericStringArrayField = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.genericField, new int[] { 6, 4, 2, 1, 0 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.genericField to be 'new int[]{6,4,2,1,0}', but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.genericField) + "'");
+        }
+
+        if (GenericClassIntArray.nongenericIntField != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericIntField to be '" + Int32.MinValue + "', but found '" + GenericClassIntArray.nongenericIntField + "'");
+        }
+
+        if (GenericClassIntArray.nongenericStringField != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericStringField to be '" + "" + "', but found '" + GenericClassIntArray.nongenericStringField + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.nongenericIntArrayField, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericIntArrayField to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.nongenericIntArrayField) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.nongenericStringArrayField, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericStringArrayField to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.nongenericStringArrayField) + "'");
+        }
+
+        GenericClassStringArray.genericField = new string[] { " ", "", "", " " };
+        GenericClassStringArray.nongenericIntField = Int32.MinValue;
+        GenericClassStringArray.nongenericStringField = "";
+        GenericClassStringArray.nongenericIntArrayField = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassStringArray.nongenericStringArrayField = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.genericField, new string[] { " ", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.genericField to be 'new string[]{\" \",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.genericField) + "'");
+        }
+
+        if (GenericClassStringArray.nongenericIntField != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericIntField to be '" + Int32.MinValue + "', but found '" + GenericClassStringArray.nongenericIntField + "'");
+        }
+
+        if (GenericClassStringArray.nongenericStringField != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericStringField to be '" + "" + "', but found '" + GenericClassStringArray.nongenericStringField + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.nongenericIntArrayField, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericIntArrayField to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.nongenericIntArrayField) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.nongenericStringArrayField, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericStringArrayField to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.nongenericStringArrayField) + "'");
+        }
+    }
+
+    public static void GenericClassProperty()
+    {
+        GenericClass<int>.classParameterType = typeof(int);
+        GenericClass<string>.classParameterType = typeof(string);
+        GenericClass<int[]>.classParameterType = typeof(int[]);
+        GenericClass<string[]>.classParameterType = typeof(string[]);
+
+        GenericClass<int> GenericClassInt = new GenericClass<int>();
+        GenericClass<string> GenericClassString = new GenericClass<string>();
+        GenericClass<int[]> GenericClassIntArray = new GenericClass<int[]>();
+        GenericClass<string[]> GenericClassStringArray = new GenericClass<string[]>();
+
+        GenericClassInt.genericProperty = Int32.MaxValue;
+        GenericClassInt.nongenericIntProperty = Int32.MinValue;
+        GenericClassInt.nongenericStringProperty = "";
+        GenericClassInt.nongenericIntArrayProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInt.nongenericStringArrayProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassInt.genericProperty != Int32.MaxValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.genericProperty to be '" + Int32.MaxValue + "', but found '" + GenericClassInt.genericProperty + "'");
+        }
+
+        if (GenericClassInt.nongenericIntProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericIntProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInt.nongenericIntProperty + "'");
+        }
+
+        if (GenericClassInt.nongenericStringProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericStringProperty to be '" + "" + "', but found '" + GenericClassInt.nongenericStringProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.nongenericIntArrayProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericIntArrayProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInt.nongenericIntArrayProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.nongenericStringArrayProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericStringArrayProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInt.nongenericStringArrayProperty) + "'");
+        }
+
+        GenericClassString.genericProperty = string.Empty;
+        GenericClassString.nongenericIntProperty = Int32.MinValue;
+        GenericClassString.nongenericStringProperty = "";
+        GenericClassString.nongenericIntArrayProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassString.nongenericStringArrayProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassString.genericProperty != string.Empty)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.genericProperty to be '" + string.Empty + "', but found '" + GenericClassString.genericProperty + "'");
+        }
+
+        if (GenericClassString.nongenericIntProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericIntProperty to be '" + Int32.MinValue + "', but found '" + GenericClassString.nongenericIntProperty + "'");
+        }
+
+        if (GenericClassString.nongenericStringProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericStringProperty to be '" + "" + "', but found '" + GenericClassString.nongenericStringProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.nongenericIntArrayProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericIntArrayProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassString.nongenericIntArrayProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.nongenericStringArrayProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericStringArrayProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassString.nongenericStringArrayProperty) + "'");
+        }
+
+        GenericClassIntArray.genericProperty = new int[] { 6, 4, 2, 1, 0 };
+        GenericClassIntArray.nongenericIntProperty = Int32.MinValue;
+        GenericClassIntArray.nongenericStringProperty = "";
+        GenericClassIntArray.nongenericIntArrayProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassIntArray.nongenericStringArrayProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.genericProperty, new int[] { 6, 4, 2, 1, 0 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.genericProperty to be 'new int[]{6,4,2,1,0}', but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.genericProperty) + "'");
+        }
+
+        if (GenericClassIntArray.nongenericIntProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericIntProperty to be '" + Int32.MinValue + "', but found '" + GenericClassIntArray.nongenericIntProperty + "'");
+        }
+
+        if (GenericClassIntArray.nongenericStringProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericStringProperty to be '" + "" + "', but found '" + GenericClassIntArray.nongenericStringProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.nongenericIntArrayProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericIntArrayProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.nongenericIntArrayProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.nongenericStringArrayProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericStringArrayProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.nongenericStringArrayProperty) + "'");
+        }
+
+        GenericClassStringArray.genericProperty = new string[] { " ", "", "", " " };
+        GenericClassStringArray.nongenericIntProperty = Int32.MinValue;
+        GenericClassStringArray.nongenericStringProperty = "";
+        GenericClassStringArray.nongenericIntArrayProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassStringArray.nongenericStringArrayProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.genericProperty, new string[] { " ", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.genericProperty to be 'new string[]{\" \",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.genericProperty) + "'");
+        }
+
+        if (GenericClassStringArray.nongenericIntProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericIntProperty to be '" + Int32.MinValue + "', but found '" + GenericClassStringArray.nongenericIntProperty + "'");
+        }
+
+        if (GenericClassStringArray.nongenericStringProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericStringProperty to be '" + "" + "', but found '" + GenericClassStringArray.nongenericStringProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.nongenericIntArrayProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericIntArrayProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.nongenericIntArrayProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.nongenericStringArrayProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericStringArrayProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.nongenericStringArrayProperty) + "'");
+        }
+    }
+
+    public static void GenericClassVirtualProperty()
+    {
+        GenericClass<int>.classParameterType = typeof(int);
+        GenericClass<string>.classParameterType = typeof(string);
+        GenericClass<int[]>.classParameterType = typeof(int[]);
+        GenericClass<string[]>.classParameterType = typeof(string[]);
+
+        GenericClass<int> GenericClassInt = new GenericClass<int>();
+        GenericClass<string> GenericClassString = new GenericClass<string>();
+        GenericClass<int[]> GenericClassIntArray = new GenericClass<int[]>();
+        GenericClass<string[]> GenericClassStringArray = new GenericClass<string[]>();
+        GenericClassInt.usingBaseVirtualProperty = true;
+        GenericClassString.usingBaseVirtualProperty = true;
+        GenericClassIntArray.usingBaseVirtualProperty = true;
+        GenericClassStringArray.usingBaseVirtualProperty = true;
+
+        GenericClassInheritsFromGenericClass<int> GenericClassInheritsFromGenericClassInt = new GenericClassInheritsFromGenericClass<int>();
+        GenericClassInheritsFromGenericClass<string> GenericClassInheritsFromGenericClassString = new GenericClassInheritsFromGenericClass<string>();
+        GenericClassInheritsFromGenericClass<int[]> GenericClassInheritsFromGenericClassIntArray = new GenericClassInheritsFromGenericClass<int[]>();
+        GenericClassInheritsFromGenericClass<string[]> GenericClassInheritsFromGenericClassStringArray = new GenericClassInheritsFromGenericClass<string[]>();
+        GenericClassInheritsFromGenericClassInt.usingBaseVirtualProperty = false;
+        GenericClassInheritsFromGenericClassString.usingBaseVirtualProperty = false;
+        GenericClassInheritsFromGenericClassIntArray.usingBaseVirtualProperty = false;
+        GenericClassInheritsFromGenericClassStringArray.usingBaseVirtualProperty = false;
+
+        GenericClass<int> GenericClassInheritsFromGenericClassCastAsGenericClassInt = GenericClassInheritsFromGenericClassInt;
+        GenericClass<string> GenericClassInheritsFromGenericClassCastAsGenericClassString = GenericClassInheritsFromGenericClassString;
+        GenericClass<int[]> GenericClassInheritsFromGenericClassCastAsGenericClassIntArray = GenericClassInheritsFromGenericClassIntArray;
+        GenericClass<string[]> GenericClassInheritsFromGenericClassCastAsGenericClassStringArray = GenericClassInheritsFromGenericClassStringArray;
+
+        GenericClassInt.genericVirtualProperty = Int32.MaxValue;
+        GenericClassInt.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInt.nongenericStringVirtualProperty = "";
+        GenericClassInt.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInt.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassInt.genericVirtualProperty != Int32.MaxValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.genericVirtualProperty to be '" + Int32.MaxValue + "', but found '" + GenericClassInt.genericVirtualProperty + "'");
+        }
+
+        if (GenericClassInt.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInt.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInt.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInt.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInt.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInt.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInt.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInt.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInt.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassString.genericVirtualProperty = string.Empty;
+        GenericClassString.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassString.nongenericStringVirtualProperty = "";
+        GenericClassString.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassString.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassString.genericVirtualProperty != string.Empty)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.genericVirtualProperty to be '" + string.Empty + "', but found '" + GenericClassString.genericVirtualProperty + "'");
+        }
+
+        if (GenericClassString.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassString.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassString.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassString.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassString.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassString.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassString.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassString.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassString.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassIntArray.genericVirtualProperty = new int[] { 6, 4, 2, 1, 0 };
+        GenericClassIntArray.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassIntArray.nongenericStringVirtualProperty = "";
+        GenericClassIntArray.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassIntArray.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.genericVirtualProperty, new int[] { 6, 4, 2, 1, 0 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.genericVirtualProperty to be 'new int[]{6,4,2,1,0}', but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.genericVirtualProperty) + "'");
+        }
+
+        if (GenericClassIntArray.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassIntArray.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassIntArray.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassIntArray.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassIntArray.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassIntArray.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassIntArray.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassIntArray.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassIntArray.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassStringArray.genericVirtualProperty = new string[] { " ", "", "", " " };
+        GenericClassStringArray.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassStringArray.nongenericStringVirtualProperty = "";
+        GenericClassStringArray.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassStringArray.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.genericVirtualProperty, new string[] { " ", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.genericVirtualProperty to be 'new string[]{\" \",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.genericVirtualProperty) + "'");
+        }
+
+        if (GenericClassStringArray.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassStringArray.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassStringArray.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassStringArray.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassStringArray.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassStringArray.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassStringArray.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassStringArray.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassStringArray.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassInheritsFromGenericClassInt.genericVirtualProperty = Int32.MaxValue;
+        GenericClassInheritsFromGenericClassInt.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassInt.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassInt.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassInt.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassInheritsFromGenericClassInt.genericVirtualProperty != Int32.MaxValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.genericVirtualProperty to be '" + Int32.MaxValue + "', but found '" + GenericClassInheritsFromGenericClassInt.genericVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassInt.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassInt.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassInt.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassInt.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassInt.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassInt.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassInt.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassInt.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassInheritsFromGenericClassString.genericVirtualProperty = string.Empty;
+        GenericClassInheritsFromGenericClassString.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassString.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassString.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassString.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassInheritsFromGenericClassString.genericVirtualProperty != string.Empty)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.genericVirtualProperty to be '" + string.Empty + "', but found '" + GenericClassInheritsFromGenericClassString.genericVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassString.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassString.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassString.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassString.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassString.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassString.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassString.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassString.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassInheritsFromGenericClassIntArray.genericVirtualProperty = new int[] { 6, 4, 2, 1, 0 };
+        GenericClassInheritsFromGenericClassIntArray.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassIntArray.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassIntArray.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassIntArray.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassIntArray.genericVirtualProperty, new int[] { 6, 4, 2, 1, 0 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.genericVirtualProperty to be 'new int[]{6,4,2,1,0}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassIntArray.genericVirtualProperty) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassIntArray.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassIntArray.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassIntArray.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassIntArray.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassIntArray.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassIntArray.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassIntArray.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassIntArray.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassInheritsFromGenericClassStringArray.genericVirtualProperty = new string[] { " ", "", "", " " };
+        GenericClassInheritsFromGenericClassStringArray.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassStringArray.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassStringArray.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassStringArray.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassStringArray.genericVirtualProperty, new string[] { " ", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.genericVirtualProperty to be 'new string[]{\" \",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassStringArray.genericVirtualProperty) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassStringArray.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassStringArray.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassStringArray.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassStringArray.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassStringArray.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassStringArray.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassStringArray.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassStringArray.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+
+        GenericClassInheritsFromGenericClassCastAsGenericClassInt.genericVirtualProperty = Int32.MaxValue;
+        GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.genericVirtualProperty != Int32.MaxValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.genericVirtualProperty to be '" + Int32.MaxValue + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.genericVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassInt.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassInheritsFromGenericClassCastAsGenericClassString.genericVirtualProperty = string.Empty;
+        GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.genericVirtualProperty != string.Empty)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.genericVirtualProperty to be '" + string.Empty + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.genericVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassString.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.genericVirtualProperty = new int[] { 6, 4, 2, 1, 0 };
+        GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.genericVirtualProperty, new int[] { 6, 4, 2, 1, 0 }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.genericVirtualProperty to be 'new int[]{6,4,2,1,0}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.genericVirtualProperty) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassIntArray.nongenericStringArrayVirtualProperty) + "'");
+        }
+
+        GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.genericVirtualProperty = new string[] { " ", "", "", " " };
+        GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntVirtualProperty = Int32.MinValue;
+        GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringVirtualProperty = "";
+        GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntArrayVirtualProperty = new int[] { 0, Int32.MaxValue, Int32.MinValue };
+        GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringArrayVirtualProperty = new string[] { "", "", "", " " };
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.genericVirtualProperty, new string[] { " ", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.genericVirtualProperty to be 'new string[]{\" \",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.genericVirtualProperty) + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntVirtualProperty != Int32.MinValue)
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntVirtualProperty to be '" + Int32.MinValue + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntVirtualProperty + "'");
+        }
+
+        if (GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringVirtualProperty != "")
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringVirtualProperty to be '" + "" + "', but found '" + GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringVirtualProperty + "'");
+        }
+
+        if (Utils.CompareArray<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntArrayVirtualProperty, new int[] { 0, Int32.MaxValue, Int32.MinValue }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntArrayVirtualProperty to be 'new int[]{0, " + Int32.MaxValue + ", " + Int32.MinValue + "}', but found '" + Utils.BuildArrayString<int>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericIntArrayVirtualProperty) + "'");
+        }
+
+        if (Utils.CompareArray<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringArrayVirtualProperty, new string[] { "", "", "", " " }))
+        {
+            Utils.Fail("Expected returned value of GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringArrayVirtualProperty to be 'new string[]{\"\",\"\",\"\",\" \"}', but found '" + Utils.BuildArrayString<string>(GenericClassInheritsFromGenericClassCastAsGenericClassStringArray.nongenericStringArrayVirtualProperty) + "'");
+        }
+    }
+
+    public static int Main()
+    {
+        try
+        {
+            GenericClassStaticMethod();
+        }
+        catch (Exception E)
+        {
+            Utils.Fail("GenericClassStaticMethod failed due to unknown exception: " + E);
+        }
+
+        try
+        {
+            GenericClassInstanceMethod();
+        }
+        catch (Exception E)
+        {
+            Utils.Fail("GenericClassInstanceMethod failed due to unknown exception: " + E);
+        }
+
+        try
+        {
+            GenericClassVirtualMethod();
+        }
+        catch (Exception E)
+        {
+            Utils.Fail("GenericClassVirtualMethod failed due to unknown exception: " + E);
+        }
+
+        try
+        {
+            GenericClassField();
+        }
+        catch (Exception E)
+        {
+            Utils.Fail("GenericClassField failed due to unknown exception: " + E);
+        }
+
+        try
+        {
+            GenericClassProperty();
+        }
+        catch (Exception E)
+        {
+            Utils.Fail("GenericClassProperty failed due to unknown exception: " + E);
+        }
+
+        try
+        {
+            GenericClassVirtualProperty();
+        }
+        catch (Exception E)
+        {
+            Utils.Fail("GenericClassVirtualProperty failed due to unknown exception: " + E);
+        }
+
+        try
+        {
+            GenericClassDelegate();
+        }
+        catch (Exception E)
+        {
+            Utils.Fail("GenericClassDelegate failed due to unknown exception: " + E);
+        }
+
+        if (Utils.failures == 0)
+        {
+            Console.WriteLine("Test Passed");
+            return 100;
+        }
+        else
+        {
+            Console.WriteLine("Test Failed!");
+            return 99;
+        }
+    }
+}
+
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b210352/csharptester.csproj b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b210352/csharptester.csproj
new file mode 100644 (file)
index 0000000..a51b95a
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="csharptester.cs" />
+    <ProjectReference Include="csharpgenerictypes.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/app.config b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/app.config
new file mode 100644 (file)
index 0000000..6f7bbd9
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.20.0" newVersion="4.0.20.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Text.Encoding" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+</configuration>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/b102447.csproj b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/b102447.csproj
new file mode 100644 (file)
index 0000000..ec67198
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="prep.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)threading+thread\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)threading+thread\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)threading+thread\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/prep.cs b/src/coreclr/tests/src/JIT/Regression/CLR-x86-JIT/V1.2-M02/b102447/prep.cs
new file mode 100644 (file)
index 0000000..f891331
--- /dev/null
@@ -0,0 +1,30 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Threading;
+
+internal struct Gen<T>
+{
+    public static void Target<U>()
+    { }
+    public static void DelegateTest<U>()
+    {
+        ThreadStart d = new ThreadStart(Gen<T>.Target<U>);
+        IAsyncResult ar = d.BeginInvoke(null, null);
+        WaitHandle.WaitAll(new System.Threading.WaitHandle[] { ar.AsyncWaitHandle });
+    }
+}
+
+
+public class Test
+{
+    public static int Main()
+    {
+        Gen<object>.DelegateTest<int>();
+        return 100;
+    }
+}
+
+
diff --git a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/CSharpPart.csproj b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/CSharpPart.csproj
new file mode 100644 (file)
index 0000000..ff65dd1
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="Core.cs" />
+    <Compile Include="StandardSupport.cs" />
+    <ProjectReference Include="jmpwrappers.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/Core.cs b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/Core.cs
new file mode 100644 (file)
index 0000000..4891a65
--- /dev/null
@@ -0,0 +1,473 @@
+using System;
+
+namespace Test
+{
+    public static class IntValues
+    {
+        public static readonly int ForArg0 = (11100 + 0);
+    }
+
+
+    public static class LongValues
+    {
+        public static readonly long ForArg1 = (3333333300L + 1L);
+    }
+
+
+    public static class FloatValues
+    {
+        public static readonly float ForArg2 = (4400.0f + 2.0f);
+    }
+
+
+    public static class DoubleValues
+    {
+        public static readonly double ForArg3 = (88888800.0d + 3.0d);
+    }
+
+
+    public static class StructValues
+    {
+        public static readonly BasicStruct ForArg4 = new BasicStruct(
+            /* Field1 = */ (1000 + 4),
+            /* Field2 = */ (2000 + 4),
+            /* Field3 = */ (3000 + 4),
+            /* Field4 = */ (4000 + 4)
+        );
+    }
+
+
+    public static class StringValues
+    {
+        public static readonly string ForArg5 = "StringValue5";
+    }
+
+
+    public static class CalleeSide
+    {
+        public static void Pass6Args_Maxstack_2(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_2\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_2");
+        }
+        public static void Pass6Args_Maxstack_3(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_3\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_3");
+        }
+        public static void Pass6Args_Maxstack_4(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_4\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_4");
+        }
+        public static void Pass6Args_Maxstack_5(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_5\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_5");
+        }
+        public static void Pass6Args_Maxstack_6(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_6\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_6");
+        }
+        public static void Pass6Args_Maxstack_7(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_7\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_7");
+        }
+        public static void Pass6Args_Maxstack_8(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_8\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_8");
+        }
+        public static void Pass6Args_Maxstack_9(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_9\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_9");
+        }
+        public static void Pass6Args_Maxstack_10(
+            int arg0,
+            long arg1,
+            float arg2,
+            double arg3,
+            BasicStruct arg4,
+            string arg5
+            )
+        {
+            Console.WriteLine("        Executing C# target for: \"Pass6Args_Maxstack_10\"");
+            Support.VerifyInt(arg0, IntValues.ForArg0);
+            Support.VerifyLong(arg1, LongValues.ForArg1);
+            Support.VerifyFloat(arg2, FloatValues.ForArg2);
+            Support.VerifyDouble(arg3, DoubleValues.ForArg3);
+            Support.VerifyStruct(arg4, StructValues.ForArg4);
+            Support.VerifyString(arg5, StringValues.ForArg5);
+            CallerSide.RecordExecutedCaller("Pass6Args_Maxstack_10");
+        }
+    }
+    public static partial class CallerSide
+    {
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_2()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_2(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_2");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_3()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_3(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_3");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_4()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_4(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_4");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_5()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_5(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_5");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_6()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_6(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_6");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_7()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_7(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_7");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_8()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_8(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_8");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_9()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_9(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_9");
+        }
+        public static void MakeWrapperCallFor_Pass6Args_Maxstack_10()
+        {
+            int arg0;
+            long arg1;
+            float arg2;
+            double arg3;
+            BasicStruct arg4;
+            string arg5;
+            arg0       = IntValues.ForArg0;
+            arg1       = LongValues.ForArg1;
+            arg2       = FloatValues.ForArg2;
+            arg3       = DoubleValues.ForArg3;
+            arg4       = StructValues.ForArg4;
+            arg5       = StringValues.ForArg5;
+            CallerSide.PrepareForWrapperCall();
+
+
+            ILJmpWrappers.Pass6Args_Maxstack_10(
+                arg0,
+                arg1,
+                arg2,
+                arg3,
+                arg4,
+                arg5
+            );
+            CallerSide.VerifyExecutedCaller("Pass6Args_Maxstack_10");
+        }
+        public static bool MakeAllWrapperCalls()
+        {
+            bool bret = true;
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_2", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_2);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_3", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_3);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_4", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_4);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_5", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_5);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_6", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_6);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_7", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_7);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_8", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_8);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_9", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_9);
+            bret &= CallerSide.MakeWrapperCall("Pass6Args_Maxstack_10", CallerSide.MakeWrapperCallFor_Pass6Args_Maxstack_10);
+            return bret;
+        }
+    }
+
+
+}
diff --git a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/StandardSupport.cs b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_132534/StandardSupport.cs
new file mode 100644 (file)
index 0000000..5867b74
--- /dev/null
@@ -0,0 +1,176 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+
+namespace Test
+{
+    public struct BasicStruct
+    {
+        public int Field1;
+        public int Field2;
+        public int Field3;
+        public int Field4;
+
+        public BasicStruct(int field1, int field2, int field3, int field4)
+        {
+            this.Field1 = field1;
+            this.Field2 = field2;
+            this.Field3 = field3;
+            this.Field4 = field4;
+            return;
+        }
+
+        public override string ToString()
+        {
+            return
+                String.Format(
+                    "{0}, {1}, {2}, {3}",
+                    this.Field1,
+                    this.Field2,
+                    this.Field3,
+                    this.Field4
+                );
+        }
+
+        public static bool AreEqual(BasicStruct s1, BasicStruct s2)
+        {
+            if ((s1.Field1 == s2.Field1) &&
+                (s1.Field2 == s2.Field2) &&
+                (s1.Field3 == s2.Field3) &&
+                (s1.Field4 == s2.Field4))
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+    }
+
+
+    public static class Support
+    {
+        private static Exception SignalVerificationFailure(string kind, string value, string expected)
+        {
+            throw
+                new Exception(
+                    String.Format(
+                        "FAILED: {0} verification failed.\r\n" +
+                        "    Observed value: {1}\r\n" +
+                        "    Expected value: {2}\r\n",
+
+                        kind,
+                        value,
+                        expected
+                    )
+                );
+        }
+
+        public static void VerifyInt(int value, int expected)
+        {
+            if (value == expected) { return; }
+            throw Support.SignalVerificationFailure("Int", value.ToString(), expected.ToString());
+        }
+
+        public static void VerifyLong(long value, long expected)
+        {
+            if (value == expected) { return; }
+            throw Support.SignalVerificationFailure("Long", value.ToString(), expected.ToString());
+        }
+
+        public static void VerifyFloat(float value, float expected)
+        {
+            if (value == expected) { return; }
+            throw Support.SignalVerificationFailure("Float", value.ToString(), expected.ToString());
+        }
+
+        public static void VerifyDouble(double value, double expected)
+        {
+            if (value == expected) { return; }
+            throw Support.SignalVerificationFailure("Double", value.ToString(), expected.ToString());
+        }
+
+        public static void VerifyString(string value, string expected)
+        {
+            if (value == expected) { return; }
+            throw Support.SignalVerificationFailure("String", value.ToString(), expected.ToString());
+        }
+
+        public static void VerifyStruct(BasicStruct value, BasicStruct expected)
+        {
+            if (BasicStruct.AreEqual(value, expected)) { return; }
+            throw Support.SignalVerificationFailure("Struct", value.ToString(), expected.ToString());
+        }
+    }
+
+
+    public static partial class CallerSide
+    {
+        private static string s_lastExecutedCaller;
+
+        public static void PrepareForWrapperCall()
+        {
+            CallerSide.s_lastExecutedCaller = null;
+            return;
+        }
+
+        public static void RecordExecutedCaller(string tag)
+        {
+            if (CallerSide.s_lastExecutedCaller != null)
+            {
+                throw new Exception("Tried to record multiple callers at once.");
+            }
+
+            CallerSide.s_lastExecutedCaller = tag;
+            return;
+        }
+
+        public static void VerifyExecutedCaller(string expectedTag)
+        {
+            if (CallerSide.s_lastExecutedCaller != expectedTag)
+            {
+                throw new Exception("The exected caller was not recorded during the last operation.");
+            }
+
+            return;
+        }
+
+        public static bool MakeWrapperCall(string functionTag, Action runSpecificWrapper)
+        {
+            Console.WriteLine("    Executing JMP wrapper for: \"{0}\"", functionTag);
+
+            try
+            {
+                runSpecificWrapper();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine("        FAILED: ({0})", e.GetType().ToString());
+                return false;
+            }
+
+            Console.WriteLine("        PASSED");
+            return true;
+        }
+    }
+
+
+    internal static class App
+    {
+        private static int Main()
+        {
+            int iret = 100;
+            Console.WriteLine("Starting JMP tests...\r\n");
+            if (!CallerSide.MakeAllWrapperCalls())
+            {
+                iret = 1;
+            }
+            Console.WriteLine("\r\nJMP tests are complete.\r\n");
+            return iret;
+        }
+    }
+}
+
index 0c9bf10..2b3953f 100644 (file)
@@ -7,9 +7,9 @@
 
 .assembly extern CSharpPart {}
 
-.assembly ILPart {}
+.assembly jmpwrappers {}
 
-.module ILPart.dll
+.module jmpwrappers.dll
 .imagebase 0x00400000
 .file alignment 0x00000200
 .stackreserve 0x00100000
diff --git a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_145295/BadUnwind2.cs b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_145295/BadUnwind2.cs
new file mode 100644 (file)
index 0000000..52cc108
--- /dev/null
@@ -0,0 +1,127 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Runtime.CompilerServices;
+
+
+namespace Test
+{
+    public static class Exceptions
+    {
+        public class ReachedCallout : Exception
+        {
+            public int CalloutIndex { get; private set; }
+            public ReachedCallout(int calloutIndex) : base("ReachedCallout") { this.CalloutIndex = calloutIndex; }
+        }
+    }
+
+
+    public static class Helpers
+    {
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Callout0() { Console.WriteLine("    REACHED: Callout0"); }
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Callout1() { Console.WriteLine("    REACHED: Callout1"); }
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Callout2() { Console.WriteLine("    REACHED: Callout2"); }
+
+
+        private static Exception s_standardCallout3Exception = new Exceptions.ReachedCallout(3);
+        private static Exception s_standardCallout4Exception = new Exceptions.ReachedCallout(4);
+        private static Exception s_standardCallout5Exception = new Exceptions.ReachedCallout(5);
+        private static Exception s_standardCallout6Exception = new Exceptions.ReachedCallout(6);
+
+
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Callout3() { Console.WriteLine("    REACHED: Callout3"); throw Helpers.s_standardCallout3Exception; }
+
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Callout4() { Console.WriteLine("    REACHED: Callout4"); throw Helpers.s_standardCallout4Exception; }
+
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Callout5() { Console.WriteLine("    REACHED: Callout5"); throw Helpers.s_standardCallout5Exception; }
+
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Callout6() { Console.WriteLine("    REACHED: Callout6"); throw Helpers.s_standardCallout6Exception; }
+
+
+        private static Exception s_standardException = new Exception("Manual throw.");
+
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        public static void Throw()
+        {
+            throw Helpers.s_standardException;
+        }
+    }
+
+
+    internal static class App
+    {
+        private static int s_numberOfFailures = 0;
+
+
+        private static void DispatchCallout(string caption, int calloutIndex, Func<int, int> runTarget)
+        {
+            Console.WriteLine("\r\nRUNNING_SCENARIO: `{0}' ({1})", caption, calloutIndex);
+
+            try
+            {
+                runTarget(calloutIndex);
+                Console.WriteLine("    FAILED: No ReachedCallout exception was thrown.");
+                App.s_numberOfFailures += 1;
+            }
+            catch (Exceptions.ReachedCallout e)
+            {
+                if (e.CalloutIndex == calloutIndex)
+                {
+                    Console.WriteLine("    PASSED.");
+                }
+                else
+                {
+                    Console.WriteLine("    FAILED: Wrong callout exception (Expected={0}, Actual={1}).", calloutIndex, e.CalloutIndex);
+                    App.s_numberOfFailures += 1;
+                }
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine("    FAILED: ({0})", e.GetType().ToString());
+                App.s_numberOfFailures += 1;
+            }
+
+            return;
+        }
+
+
+        private static void DispatchCalloutSequence(string caption, Func<int, int> runTarget)
+        {
+            int calloutIndex;
+
+            for (calloutIndex = 3; calloutIndex <= 6; calloutIndex++)
+            {
+                App.DispatchCallout(caption, calloutIndex, runTarget);
+            }
+
+            return;
+        }
+
+
+        private static int Main()
+        {
+            App.DispatchCalloutSequence("TopLevel", ILPart.CallThroughFrameWithMultipleEndfinallyOps_TopLevel);
+            App.DispatchCalloutSequence("Nested", ILPart.CallThroughFrameWithMultipleEndfinallyOps_Nested);
+
+            if (App.s_numberOfFailures == 0)
+            {
+                Console.WriteLine("\r\nTest passed.");
+                return 100;
+            }
+            else
+            {
+                Console.WriteLine("\r\nTest failed.  ErrorCount={0}", App.s_numberOfFailures);
+                return 101;
+            }
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_145295/CSharpPart.csproj b/src/coreclr/tests/src/JIT/Regression/Dev11/External/dev11_145295/CSharpPart.csproj
new file mode 100644 (file)
index 0000000..43b3e2b
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="BadUnwind2.cs" />
+    <ProjectReference Include="ilpart.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/app.config b/src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/app.config
new file mode 100644 (file)
index 0000000..6f7bbd9
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.20.0" newVersion="4.0.20.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Text.Encoding" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+</configuration>
diff --git a/src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/b601838.cs b/src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/b601838.cs
new file mode 100644 (file)
index 0000000..802929d
--- /dev/null
@@ -0,0 +1,41 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Security;
+// using System.Security.Permissions;
+using System.Collections.Generic;
+
+// [KeyContainerPermission(SecurityAction.Demand, Flags = KeyContainerPermissionFlags.Delete)]
+internal static class GenericSecurity
+{
+    private static int s_result = 99;
+
+    private static void Gen<T>() where T : System.Exception, new()
+    {
+        try
+        {
+            throw new T();
+        }
+        catch (T)
+        {
+            Console.WriteLine("Pass");
+            s_result = 100;
+        }
+    }
+
+    private static int Main()
+    {
+        try
+        {
+            Gen<Exception>();
+        }
+        catch
+        {
+            Console.WriteLine("Fail");
+            s_result = -2;
+        }
+        return s_result;
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/b601838.csproj b/src/coreclr/tests/src/JIT/Regression/clr-x64-JIT/v2.1/b601838/b601838.csproj
new file mode 100644 (file)
index 0000000..a83933f
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="b601838.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nd1A_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nd1A_d.csproj
new file mode 100644 (file)
index 0000000..2fd8c08
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nd1A_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nd1A_r.csproj
new file mode 100644 (file)
index 0000000..2fd8c08
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nf1A_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nf1A_d.csproj
new file mode 100644 (file)
index 0000000..6e2d410
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nf1A_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_nf1A_r.csproj
new file mode 100644 (file)
index 0000000..6e2d410
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sd1A_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sd1A_d.csproj
new file mode 100644 (file)
index 0000000..8955cd8
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sd1A_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sd1A_r.csproj
new file mode 100644 (file)
index 0000000..8955cd8
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sf1A_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sf1A_d.csproj
new file mode 100644 (file)
index 0000000..a1fb60b
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sf1A_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testA/hfa_sf1A_r.csproj
new file mode 100644 (file)
index 0000000..a1fb60b
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testA.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nd1C_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nd1C_d.csproj
new file mode 100644 (file)
index 0000000..90f5882
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nd1C_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nd1C_r.csproj
new file mode 100644 (file)
index 0000000..90f5882
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nf1C_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nf1C_d.csproj
new file mode 100644 (file)
index 0000000..c5f9a35
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nf1C_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_nf1C_r.csproj
new file mode 100644 (file)
index 0000000..c5f9a35
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sd1C_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sd1C_d.csproj
new file mode 100644 (file)
index 0000000..1dc71ed
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sd1C_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sd1C_r.csproj
new file mode 100644 (file)
index 0000000..1dc71ed
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sf1C_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sf1C_d.csproj
new file mode 100644 (file)
index 0000000..9ec5c02
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sf1C_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testC/hfa_sf1C_r.csproj
new file mode 100644 (file)
index 0000000..9ec5c02
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testC.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nd1E_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nd1E_d.csproj
new file mode 100644 (file)
index 0000000..8d70793
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nd1E_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nd1E_r.csproj
new file mode 100644 (file)
index 0000000..8d70793
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nf1E_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nf1E_d.csproj
new file mode 100644 (file)
index 0000000..1e5ddec
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nf1E_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_nf1E_r.csproj
new file mode 100644 (file)
index 0000000..1e5ddec
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sd1E_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sd1E_d.csproj
new file mode 100644 (file)
index 0000000..28eb29a
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sd1E_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sd1E_r.csproj
new file mode 100644 (file)
index 0000000..28eb29a
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sf1E_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sf1E_d.csproj
new file mode 100644 (file)
index 0000000..e0c7603
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sf1E_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testE/hfa_sf1E_r.csproj
new file mode 100644 (file)
index 0000000..e0c7603
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testE.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nd1G_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nd1G_d.csproj
new file mode 100644 (file)
index 0000000..d4b6ef6
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nd1G_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nd1G_r.csproj
new file mode 100644 (file)
index 0000000..d4b6ef6
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nf1G_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nf1G_d.csproj
new file mode 100644 (file)
index 0000000..f283604
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nf1G_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_nf1G_r.csproj
new file mode 100644 (file)
index 0000000..f283604
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_nested_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sd1G_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sd1G_d.csproj
new file mode 100644 (file)
index 0000000..f8017ba
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sd1G_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sd1G_r.csproj
new file mode 100644 (file)
index 0000000..f8017ba
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f64_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sf1G_d.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sf1G_d.csproj
new file mode 100644 (file)
index 0000000..70e30d1
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sf1G_r.csproj b/src/coreclr/tests/src/JIT/jit64/hfa/main/testG/hfa_sf1G_r.csproj
new file mode 100644 (file)
index 0000000..70e30d1
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="hfa_testG.cs" />
+    <ProjectReference Include="..\dll\common.csproj" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_managed.csproj" />
+    <ProjectReference Include="..\dll\CMakeLists.txt" />
+    <ProjectReference Include="..\dll\hfa_simple_f32_common.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01.cs b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01.cs
new file mode 100644 (file)
index 0000000..ee7e3f0
--- /dev/null
@@ -0,0 +1,70 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*
+ * Test reading localloc variable from catch block.
+ */
+
+using System;
+using LocallocTesting;
+
+internal class LocallocTest
+{
+    public static unsafe int Main()
+    {
+        ulong local1 = Global.INITIAL_VALUE;
+        ulong local2 = local1 + 1;
+        int size = 0;
+#if LOCALLOC_SMALL
+               Int32* intArray1 = stackalloc Int32[1];
+               Int32* intArray2 = stackalloc Int32[1];
+               size = 1;
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               Int32* intArray2 = stackalloc Int32[0x1000];
+               size = 0x1000;
+#else
+        Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+        Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+        size = Global.stackAllocSize;
+#endif
+        try
+        {
+            Global.initializeStack(intArray1, size, 1000);
+            Global.initializeStack(intArray2, size, 2000);
+            throw new Exception("Test Exception");
+        }
+        catch
+        {
+            if (!Global.verifyStack("intArray1", intArray1, size, 1000))
+            {
+                return 1;
+            }
+            if (!Global.verifyStack("intArray2", intArray2, size, 2000))
+            {
+                return 1;
+            }
+        }
+
+
+        if (!Global.verifyStack("intArray1", intArray1, size, 1000))
+        {
+            return 1;
+        }
+        if (!Global.verifyStack("intArray2", intArray2, size, 2000))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local1", local1, Global.INITIAL_VALUE))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local2", local2, Global.INITIAL_VALUE + 1))
+        {
+            return 1;
+        }
+        Console.WriteLine("Passed\n");
+        return 100;
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_dynamic.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_dynamic.csproj
new file mode 100644 (file)
index 0000000..c74e188
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_DYNAMIC</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh01.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_large.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_large.csproj
new file mode 100644 (file)
index 0000000..11e8f2e
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_LARGE</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh01.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_small.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh01_small.csproj
new file mode 100644 (file)
index 0000000..b174d29
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh01.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02.cs b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02.cs
new file mode 100644 (file)
index 0000000..34e81ef
--- /dev/null
@@ -0,0 +1,78 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*
+ * Test reading localloc variable from finally block.
+ */
+
+using System;
+using LocallocTesting;
+
+internal class LocallocTest
+{
+    public static unsafe int Main()
+    {
+        bool testPassed = true;
+        ulong local1 = Global.INITIAL_VALUE;
+        ulong local2 = local1 + 1;
+        int size = 0;
+#if LOCALLOC_SMALL
+               Int32* intArray1 = stackalloc Int32[1];
+               Int32* intArray2 = stackalloc Int32[1];
+               size = 1;
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               Int32* intArray2 = stackalloc Int32[0x1000];
+               size = 0x1000;
+#else
+        Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+        Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+        size = Global.stackAllocSize;
+#endif
+        try
+        {
+            try
+            {
+                Global.initializeStack(intArray1, size, 1000);
+                Global.initializeStack(intArray2, size, 2000);
+                throw new Exception("Test Exception");
+            }
+            finally
+            {
+                if (!Global.verifyStack("intArray1", intArray1, size, 1000))
+                {
+                    testPassed = false;
+                }
+                if (!Global.verifyStack("intArray2", intArray2, size, 2000))
+                {
+                    testPassed = false;
+                }
+            }
+        }
+        catch
+        {
+        }
+        if (!testPassed)
+            return 1;
+
+        if (!Global.verifyStack("intArray1", intArray1, size, 1000))
+        {
+            return 1;
+        }
+        if (!Global.verifyStack("intArray2", intArray2, size, 2000))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local1", local1, Global.INITIAL_VALUE))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local2", local2, Global.INITIAL_VALUE + 1))
+        {
+            return 1;
+        }
+        Console.WriteLine("Passed\n");
+        return 100;
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_dynamic.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_dynamic.csproj
new file mode 100644 (file)
index 0000000..0e2f457
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_DYNAMIC</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh02.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_large.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_large.csproj
new file mode 100644 (file)
index 0000000..a880927
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_LARGE</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh02.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_small.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/eh/eh02_small.csproj
new file mode 100644 (file)
index 0000000..8f9c177
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh02.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09.cs b/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09.cs
new file mode 100644 (file)
index 0000000..8e04ec8
--- /dev/null
@@ -0,0 +1,77 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*
+ * Test reading localloc variable from nested catch block.
+ */
+
+using System;
+using LocallocTesting;
+
+internal class LocallocTest
+{
+    private static int s_locallocSize = 0;
+    public static unsafe int Main()
+    {
+        ulong local1 = Global.INITIAL_VALUE;
+        ulong local2 = local1 + 1;
+#if LOCALLOC_SMALL
+        Int32* intArray1 = stackalloc Int32[1];
+        Int32* intArray2 = stackalloc Int32[1];
+        s_locallocSize = 1;
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               Int32* intArray2 = stackalloc Int32[0x1000];
+               locallocSize = 0x1000;
+#else
+               Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+               Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+               locallocSize = Global.stackAllocSize;
+#endif
+        try
+        {
+            throw new Exception("Test Exception");
+        }
+        catch
+        {
+            try
+            {
+                Global.initializeStack(intArray1, s_locallocSize, 1000);
+                Global.initializeStack(intArray2, s_locallocSize, 2000);
+                throw new Exception("Test Exception");
+            }
+            catch
+            {
+                if (!Global.verifyStack("intArray1", intArray1, s_locallocSize, 1000))
+                {
+                    return 1;
+                }
+                if (!Global.verifyStack("intArray2", intArray2, s_locallocSize, 2000))
+                {
+                    return 1;
+                }
+            }
+        }
+
+
+        if (!Global.verifyStack("intArray1", intArray1, s_locallocSize, 1000))
+        {
+            return 1;
+        }
+        if (!Global.verifyStack("intArray2", intArray2, s_locallocSize, 2000))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local1", local1, Global.INITIAL_VALUE))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local2", local2, Global.INITIAL_VALUE + 1))
+        {
+            return 1;
+        }
+        Console.WriteLine("Passed\n");
+        return 100;
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_dynamic.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_dynamic.csproj
new file mode 100644 (file)
index 0000000..ad40dac
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh09.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_large.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_large.csproj
new file mode 100644 (file)
index 0000000..ad40dac
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh09.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_small.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/ehverify/eh09_small.csproj
new file mode 100644 (file)
index 0000000..ad40dac
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="eh09.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01.cs b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01.cs
new file mode 100644 (file)
index 0000000..0fd91ee
--- /dev/null
@@ -0,0 +1,94 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*
+ * Test unwinding from simple function.
+ */
+
+using System;
+using LocallocTesting;
+
+internal class LocallocTest
+{
+    private static int s_locallocSize = 0;
+    public static unsafe int Main()
+    {
+        ulong local1 = Global.INITIAL_VALUE;
+        ulong local2 = local1 + 1;
+#if LOCALLOC_SMALL
+               Int32* intArray1 = stackalloc Int32[1];
+               s_locallocSize = 1;
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               s_locallocSize = 0x1000;
+#else
+        Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+        s_locallocSize = Global.stackAllocSize;
+#endif
+        try
+        {
+            Global.initializeStack(intArray1, s_locallocSize, 1000);
+            unwindTest1();
+            return 1;
+        }
+        catch
+        {
+        }
+        if (!Global.verifyStack("intArray1", intArray1, s_locallocSize, 1000))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local1", local1, Global.INITIAL_VALUE))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local2", local2, Global.INITIAL_VALUE + 1))
+        {
+            return 1;
+        }
+        Console.WriteLine("Passed\n");
+        return 100;
+    }
+
+    public unsafe static void unwindTest1()
+    {
+#if LOCALLOC_SMALL
+               Int32* intArray2 = stackalloc Int32[1];
+#elif LOCALLOC_LARGE
+               Int32* intArray2 = stackalloc Int32[0x1000];
+#else
+        Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+#endif
+        Global.initializeStack(intArray2, s_locallocSize, 3000);
+
+        if (Global.verifyStack("intArray2", intArray2, s_locallocSize, 3000))
+        {
+            LocallocTest testObj = new LocallocTest();
+            testObj.unwindTest2(1, 2, 3, 4, 5, 6, 7, 8, 9);
+        }
+        return;
+    }
+
+    private unsafe void unwindTest2(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9)
+    {
+#if LOCALLOC_SMALL
+               Int32* intArray3 = stackalloc Int32[1];
+#elif LOCALLOC_LARGE
+               Int32* intArray3 = stackalloc Int32[0x1000];
+#else
+        Int32* intArray3 = stackalloc Int32[Global.stackAllocSize];
+#endif
+        Global.initializeStack(intArray3, s_locallocSize, 4000);
+
+        if (i9 != 9)
+        {
+            Console.WriteLine("Parameters on stack is corrupted\n");
+            return;
+        }
+        if (Global.verifyStack("intArray3", intArray3, s_locallocSize, 4000))
+        {
+            throw new Exception("Test Exception");
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_dynamic.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_dynamic.csproj
new file mode 100644 (file)
index 0000000..bc5d36b
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_DYNAMIC</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind01.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_large.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_large.csproj
new file mode 100644 (file)
index 0000000..efc0dfe
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_LARGE</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind01.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_small.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind01_small.csproj
new file mode 100644 (file)
index 0000000..5c79072
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind01.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02.cs b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02.cs
new file mode 100644 (file)
index 0000000..14649fe
--- /dev/null
@@ -0,0 +1,111 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*
+ * Test unwinding from catch block.
+ */
+
+using System;
+using LocallocTesting;
+
+internal class LocallocTest
+{
+    private static int s_locallocSize = 0;
+    public static unsafe int Main()
+    {
+        ulong local1 = Global.INITIAL_VALUE;
+        ulong local2 = local1 + 1;
+#if LOCALLOC_SMALL
+               Int32* intArray1 = stackalloc Int32[1];
+               s_locallocSize = 1;
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               s_locallocSize = 0x1000;
+#else
+
+        Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+        s_locallocSize = Global.stackAllocSize;
+#endif
+        try
+        {
+            Global.initializeStack(intArray1, s_locallocSize, 1000);
+            unwindTest1();
+            return 1;
+        }
+        catch
+        {
+        }
+        if (!Global.verifyStack("intArray1", intArray1, s_locallocSize, 1000))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local1", local1, Global.INITIAL_VALUE))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local2", local2, Global.INITIAL_VALUE + 1))
+        {
+            return 1;
+        }
+        Console.WriteLine("Passed\n");
+        return 100;
+    }
+
+    public unsafe static void unwindTest1()
+    {
+#if LOCALLOC_SMALL
+               Int32* intArray2 = stackalloc Int32[1];
+#elif LOCALLOC_LARGE
+               Int32* intArray2 = stackalloc Int32[0x1000];
+#else
+        Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+#endif
+        Global.initializeStack(intArray2, s_locallocSize, 3000);
+
+        try
+        {
+            LocallocTest testObj = new LocallocTest();
+            testObj.unwindTest2(1, 2, 3, 4, 5, 6, 7, 8, 9);
+        }
+        catch
+        {
+            Console.WriteLine("catch block in unwindTest1.\n");
+            if (Global.verifyStack("intArray2", intArray2, s_locallocSize, 3000))
+            {
+                throw;
+            }
+        }
+        return;
+    }
+
+    private unsafe void unwindTest2(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9)
+    {
+#if LOCALLOC_SMALL
+               Int32* intArray3 = stackalloc Int32[1];
+#elif LOCALLOC_LARGE
+               Int32* intArray3 = stackalloc Int32[0x1000];
+#else
+        Int32* intArray3 = stackalloc Int32[Global.stackAllocSize];
+#endif
+        Global.initializeStack(intArray3, s_locallocSize, 4000);
+        try
+        {
+            throw new Exception("Test Exception");
+        }
+        catch
+        {
+            Console.WriteLine("catch block in unwindTest2.\n");
+            if (i9 != 9)
+            {
+                Console.WriteLine("Parameters on stack is corrupted\n");
+                return;
+            }
+
+            if (Global.verifyStack("intArray3", intArray3, s_locallocSize, 4000))
+            {
+                throw;
+            }
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_dynamic.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_dynamic.csproj
new file mode 100644 (file)
index 0000000..e6b1c46
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_DYNAMIC</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind02.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_large.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_large.csproj
new file mode 100644 (file)
index 0000000..d389c17
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_LARGE</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind02.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_small.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind02_small.csproj
new file mode 100644 (file)
index 0000000..a7e85e5
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind02.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03.cs b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03.cs
new file mode 100644 (file)
index 0000000..d18029d
--- /dev/null
@@ -0,0 +1,114 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*
+ * Test unwinding from finally block.
+ */
+
+using System;
+using LocallocTesting;
+
+internal class LocallocTest
+{
+    private static bool s_testFailed = false;
+    private static int s_locallocSize = 0;
+    public static unsafe int Main()
+    {
+        ulong local1 = Global.INITIAL_VALUE;
+        ulong local2 = local1 + 1;
+#if LOCALLOC_SMALL
+               Int32* intArray1 = stackalloc Int32[1];
+               s_locallocSize = 1;
+#elif LOCALLOC_LARGE
+               Int32* intArray1 = stackalloc Int32[0x1000];
+               s_locallocSize = 0x1000;
+#else
+
+        Int32* intArray1 = stackalloc Int32[Global.stackAllocSize];
+        s_locallocSize = Global.stackAllocSize;
+#endif
+        try
+        {
+            Global.initializeStack(intArray1, s_locallocSize, 1000);
+            unwindTest1();
+            return 1;
+        }
+        catch
+        {
+        }
+        if (s_testFailed)
+            return 1;
+
+        if (!Global.verifyStack("intArray1", intArray1, s_locallocSize, 1000))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local1", local1, Global.INITIAL_VALUE))
+        {
+            return 1;
+        }
+        if (!Global.verifyLocal("local2", local2, Global.INITIAL_VALUE + 1))
+        {
+            return 1;
+        }
+        Console.WriteLine("Passed\n");
+        return 100;
+    }
+
+    public unsafe static void unwindTest1()
+    {
+#if LOCALLOC_SMALL
+               Int32* intArray2 = stackalloc Int32[1];
+#elif LOCALLOC_LARGE
+               Int32* intArray2 = stackalloc Int32[0x1000];
+#else
+        Int32* intArray2 = stackalloc Int32[Global.stackAllocSize];
+#endif
+        Global.initializeStack(intArray2, s_locallocSize, 3000);
+
+        try
+        {
+            LocallocTest testObj = new LocallocTest();
+            testObj.unwindTest2(1, 2, 3, 4, 5, 6, 7, 8, 9);
+        }
+        finally
+        {
+            Console.WriteLine("finally block in unwindTest1.\n");
+            if (!s_testFailed)
+            {
+                s_testFailed = !Global.verifyStack("intArray2", intArray2, s_locallocSize, 3000);
+            }
+        }
+        return;
+    }
+
+    private unsafe void unwindTest2(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9)
+    {
+#if LOCALLOC_SMALL
+               Int32* intArray3 = stackalloc Int32[1];
+#elif LOCALLOC_LARGE
+               Int32* intArray3 = stackalloc Int32[0x1000];
+#else
+        Int32* intArray3 = stackalloc Int32[Global.stackAllocSize];
+#endif
+        Global.initializeStack(intArray3, s_locallocSize, 4000);
+        try
+        {
+            throw new Exception("Test Exception");
+        }
+        finally
+        {
+            Console.WriteLine("finally block in unwindTest2.\n");
+            if (i9 != 9)
+            {
+                Console.WriteLine("Parameters on stack is corrupted\n");
+                s_testFailed = true;
+            }
+            else
+            {
+                s_testFailed = !Global.verifyStack("intArray3", intArray3, s_locallocSize, 4000);
+            }
+        }
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_dynamic.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_dynamic.csproj
new file mode 100644 (file)
index 0000000..de1e799
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_DYNAMIC</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind03.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_large.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_large.csproj
new file mode 100644 (file)
index 0000000..6693bc3
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_LARGE</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind03.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_small.csproj b/src/coreclr/tests/src/JIT/jit64/localloc/unwind/unwind03_small.csproj
new file mode 100644 (file)
index 0000000..9755858
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <DefineConstants>$(DefineConstants);DESKTOP;LOCALLOC_SMALL</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="unwind03.cs" />
+    <ProjectReference Include="..\common\common.ilproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
   </ItemGroup>
   <PropertyGroup>
     <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
-    <DebugType>None</DebugType>
-    <Optimize>True</Optimize>
+    <DebugType>Full</DebugType>
   </PropertyGroup>
   <ItemGroup>
-    <Compile Include="csattr.cs" />
+    <Compile Include="dll.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
diff --git a/src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/test.csproj b/src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/test.csproj
new file mode 100644 (file)
index 0000000..6e46a8c
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>PdbOnly</DebugType>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="use.cs" />
+    <ProjectReference Include="library1.csproj">
+        <Name>Library1</Name>
+        <Aliases>Library1</Aliases>
+    </ProjectReference>
+    <ProjectReference Include="library2.csproj">
+        <Name>Library2</Name>
+        <Aliases>Library2</Aliases>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)minimal\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)minimal\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)minimal\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/use.cs b/src/coreclr/tests/src/JIT/jit64/regress/vsw/568666/use.cs
new file mode 100644 (file)
index 0000000..89d2cbb
--- /dev/null
@@ -0,0 +1,25 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+extern alias Library1;
+extern alias Library2;
+
+using System;
+
+internal static class Use
+{
+    private static int Main()
+    {
+        int result = 100;
+        Console.WriteLine(Library1.Library.Name);
+        if (Library1.Library.Name != null)
+            result++;
+        Console.WriteLine(Library2.Library.Name);
+        if (Library2.Library.Name != null)
+            result++;
+
+        Console.WriteLine("Expected 2 static constructors to be run, actual={0}", result - 100);
+        return result - 2;
+    }
+}
diff --git a/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1.cs b/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1.cs
new file mode 100644 (file)
index 0000000..d8ef5b1
--- /dev/null
@@ -0,0 +1,88 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+
+namespace VirtFunc
+{
+    internal class CTest1
+    {
+        private static int Main()
+        {
+            Dictionary<object, int> myHT = new Dictionary<object, int>();
+
+            CDerived1 c1 = new CDerived1();
+            myHT.Add(c1, 1);
+
+            CDerived2 c2 = new CDerived2();
+            myHT.Add(c2, 2);
+
+            CDerived3 c3 = new CDerived3();
+            myHT.Add(c3, 3);
+
+            CDerived4 c4 = new CDerived4();
+            myHT.Add(c4, 4);
+
+            CDerived5 c5 = new CDerived5();
+            myHT.Add(c5, 5);
+
+            CDerived6 c6 = new CDerived6();
+            myHT.Add(c6, 6);
+
+            CDerived7 c7 = new CDerived7();
+            myHT.Add(c7, 7);
+
+            CDerived8 c8 = new CDerived8();
+            myHT.Add(c8, 8);
+
+            CDerived9 c9 = new CDerived9();
+            myHT.Add(c9, 9);
+
+            CDerived10 c10 = new CDerived10();
+            myHT.Add(c10, 10);
+
+            CDerived11 c11 = new CDerived11();
+            myHT.Add(c11, 11);
+
+            CDerived12 c12 = new CDerived12();
+            myHT.Add(c12, 12);
+
+            CDerived13 c13 = new CDerived13();
+            myHT.Add(c13, 13);
+
+            CDerived14 c14 = new CDerived14();
+            myHT.Add(c14, 14);
+
+            CDerived15 c15 = new CDerived15();
+            myHT.Add(c15, 15);
+
+            CDerived16 c16 = new CDerived16();
+            myHT.Add(c16, 16);
+
+            CDerived17 c17 = new CDerived17();
+            myHT.Add(c17, 17);
+
+            CDerived18 c18 = new CDerived18();
+            myHT.Add(c18, 18);
+
+            CDerived19 c19 = new CDerived19();
+            myHT.Add(c19, 19);
+
+            CDerived20 c20 = new CDerived20();
+            myHT.Add(c20, 20);
+
+           foreach (var item in myHT) {
+             if (item.Key.GetHashCode() != item.Value) {
+               Console.WriteLine("FAILED at " + item.Value);
+               return 1;
+             }
+           }
+
+            Console.WriteLine("PASSED");
+            return 100;
+        }
+    }
+}
+// csc /r:cderived1.dll,cderived2.dll,cderived3.dll,cderived4.dll,cderived5.dll,cderived6.dll,cderived7.dll,cderived8.dll,cderived9.dll,cderived10.dll,cderived11.dll,cderived12.dll,cderived13.dll,cderived14.dll,cderived15.dll,cderived16.dll,cderived17.dll,cderived18.dll,cderived19.dll,cderived20.dll ctest1.cs
diff --git a/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_d.csproj b/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_d.csproj
new file mode 100644 (file)
index 0000000..cca5482
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="ctest1.cs" />
+    <ProjectReference Include="cderived1.csproj" />
+    <ProjectReference Include="cderived2.csproj" />
+    <ProjectReference Include="cderived3.csproj" />
+    <ProjectReference Include="cderived4.csproj" />
+    <ProjectReference Include="cderived5.csproj" />
+    <ProjectReference Include="cderived6.csproj" />
+    <ProjectReference Include="cderived7.csproj" />
+    <ProjectReference Include="cderived8.csproj" />
+    <ProjectReference Include="cderived9.csproj" />
+    <ProjectReference Include="cderived10.csproj" />
+    <ProjectReference Include="cderived11.csproj" />
+    <ProjectReference Include="cderived12.csproj" />
+    <ProjectReference Include="cderived13.csproj" />
+    <ProjectReference Include="cderived14.csproj" />
+    <ProjectReference Include="cderived15.csproj" />
+    <ProjectReference Include="cderived16.csproj" />
+    <ProjectReference Include="cderived17.csproj" />
+    <ProjectReference Include="cderived18.csproj" />
+    <ProjectReference Include="cderived19.csproj" />
+    <ProjectReference Include="cderived20.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)extra\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)extra\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)extra\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_do.csproj b/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_do.csproj
new file mode 100644 (file)
index 0000000..76eead0
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>Full</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="ctest1.cs" />
+    <ProjectReference Include="cderived1.csproj" />
+    <ProjectReference Include="cderived2.csproj" />
+    <ProjectReference Include="cderived3.csproj" />
+    <ProjectReference Include="cderived4.csproj" />
+    <ProjectReference Include="cderived5.csproj" />
+    <ProjectReference Include="cderived6.csproj" />
+    <ProjectReference Include="cderived7.csproj" />
+    <ProjectReference Include="cderived8.csproj" />
+    <ProjectReference Include="cderived9.csproj" />
+    <ProjectReference Include="cderived10.csproj" />
+    <ProjectReference Include="cderived11.csproj" />
+    <ProjectReference Include="cderived12.csproj" />
+    <ProjectReference Include="cderived13.csproj" />
+    <ProjectReference Include="cderived14.csproj" />
+    <ProjectReference Include="cderived15.csproj" />
+    <ProjectReference Include="cderived16.csproj" />
+    <ProjectReference Include="cderived17.csproj" />
+    <ProjectReference Include="cderived18.csproj" />
+    <ProjectReference Include="cderived19.csproj" />
+    <ProjectReference Include="cderived20.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)extra\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)extra\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)extra\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_r.csproj b/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_r.csproj
new file mode 100644 (file)
index 0000000..cb1099c
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize></Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="ctest1.cs" />
+    <ProjectReference Include="cderived1.csproj" />
+    <ProjectReference Include="cderived2.csproj" />
+    <ProjectReference Include="cderived3.csproj" />
+    <ProjectReference Include="cderived4.csproj" />
+    <ProjectReference Include="cderived5.csproj" />
+    <ProjectReference Include="cderived6.csproj" />
+    <ProjectReference Include="cderived7.csproj" />
+    <ProjectReference Include="cderived8.csproj" />
+    <ProjectReference Include="cderived9.csproj" />
+    <ProjectReference Include="cderived10.csproj" />
+    <ProjectReference Include="cderived11.csproj" />
+    <ProjectReference Include="cderived12.csproj" />
+    <ProjectReference Include="cderived13.csproj" />
+    <ProjectReference Include="cderived14.csproj" />
+    <ProjectReference Include="cderived15.csproj" />
+    <ProjectReference Include="cderived16.csproj" />
+    <ProjectReference Include="cderived17.csproj" />
+    <ProjectReference Include="cderived18.csproj" />
+    <ProjectReference Include="cderived19.csproj" />
+    <ProjectReference Include="cderived20.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)extra\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)extra\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)extra\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>
diff --git a/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_ro.csproj b/src/coreclr/tests/src/JIT/opt/virtualstubdispatch/hashcode/ctest1_cs_ro.csproj
new file mode 100644 (file)
index 0000000..6a440cb
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <PropertyGroup>
+    <!-- Set to 'Full' if the Debug? column is marked in the spreadsheet. Leave blank otherwise. -->
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+    <NoLogo>True</NoLogo>
+    <DefineConstants>$(DefineConstants);DESKTOP</DefineConstants>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="ctest1.cs" />
+    <ProjectReference Include="cderived1.csproj" />
+    <ProjectReference Include="cderived2.csproj" />
+    <ProjectReference Include="cderived3.csproj" />
+    <ProjectReference Include="cderived4.csproj" />
+    <ProjectReference Include="cderived5.csproj" />
+    <ProjectReference Include="cderived6.csproj" />
+    <ProjectReference Include="cderived7.csproj" />
+    <ProjectReference Include="cderived8.csproj" />
+    <ProjectReference Include="cderived9.csproj" />
+    <ProjectReference Include="cderived10.csproj" />
+    <ProjectReference Include="cderived11.csproj" />
+    <ProjectReference Include="cderived12.csproj" />
+    <ProjectReference Include="cderived13.csproj" />
+    <ProjectReference Include="cderived14.csproj" />
+    <ProjectReference Include="cderived15.csproj" />
+    <ProjectReference Include="cderived16.csproj" />
+    <ProjectReference Include="cderived17.csproj" />
+    <ProjectReference Include="cderived18.csproj" />
+    <ProjectReference Include="cderived19.csproj" />
+    <ProjectReference Include="cderived20.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="$(JitPackagesConfigFileDirectory)extra\project.json" />
+    <None Include="app.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <PropertyGroup>
+    <ProjectJson>$(JitPackagesConfigFileDirectory)extra\project.json</ProjectJson>
+    <ProjectLockJson>$(JitPackagesConfigFileDirectory)extra\project.lock.json</ProjectLockJson>
+  </PropertyGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup> 
+</Project>